[Intel-gfx] [PATCH] fix off by one in phys object cleanup

Jesse Barnes jbarnes at virtuousgeek.org
Mon Jan 19 21:58:30 CET 2009


Fix an off by one in the phys object cleanup code (the cleanup code was
going from 0-max_objs-1, but it looks like the free_phys_obj code was
expecting 1-max_objs?), and fix up a related warning while we're at it.

Signed-off-by: Jesse Barnes <jbarnes at virtuousgeek.org>

diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index 96316fd..cfb19b8 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -3344,10 +3344,10 @@ void i915_gem_free_phys_object(struct drm_device *dev, int id)
 	drm_i915_private_t *dev_priv = dev->dev_private;
 	struct drm_i915_gem_phys_object *phys_obj;
 
-	if (!dev_priv->mm.phys_objs[id - 1])
+	if (!dev_priv->mm.phys_objs[id])
 		return;
 
-	phys_obj = dev_priv->mm.phys_objs[id - 1];
+	phys_obj = dev_priv->mm.phys_objs[id];
 	if (phys_obj->cur_obj) {
 		i915_gem_detach_phys_object(dev, phys_obj->cur_obj);
 	}
@@ -3357,7 +3357,7 @@ void i915_gem_free_phys_object(struct drm_device *dev, int id)
 #endif
 	drm_pci_free(dev, phys_obj->handle);
 	kfree(phys_obj);
-	dev_priv->mm.phys_objs[id - 1] = NULL;
+	dev_priv->mm.phys_objs[id] = NULL;
 }
 
 void i915_gem_free_all_phys_object(struct drm_device *dev)
@@ -3427,7 +3427,7 @@ i915_gem_attach_phys_object(struct drm_device *dev,
 		ret = i915_gem_init_phys_object(dev, id,
 						obj->size);
 		if (ret) {
-			DRM_ERROR("failed to init phys object %d size: %d\n", id, obj->size);
+			DRM_ERROR("failed to init phys object %d size: %d\n", id, (int)obj->size);
 			goto out;
 		}
 	}



More information about the Intel-gfx mailing list