aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/omapdrm/omap_gem.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/omapdrm/omap_gem.c')
-rw-r--r--drivers/gpu/drm/omapdrm/omap_gem.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/drivers/gpu/drm/omapdrm/omap_gem.c b/drivers/gpu/drm/omapdrm/omap_gem.c
index cebbdf081e5d..4ba5d035c590 100644
--- a/drivers/gpu/drm/omapdrm/omap_gem.c
+++ b/drivers/gpu/drm/omapdrm/omap_gem.c
@@ -1000,6 +1000,7 @@ int omap_gem_resume(struct drm_device *dev)
1000 struct omap_gem_object *omap_obj; 1000 struct omap_gem_object *omap_obj;
1001 int ret = 0; 1001 int ret = 0;
1002 1002
1003 mutex_lock(&priv->list_lock);
1003 list_for_each_entry(omap_obj, &priv->obj_list, mm_list) { 1004 list_for_each_entry(omap_obj, &priv->obj_list, mm_list) {
1004 if (omap_obj->block) { 1005 if (omap_obj->block) {
1005 struct drm_gem_object *obj = &omap_obj->base; 1006 struct drm_gem_object *obj = &omap_obj->base;
@@ -1011,12 +1012,14 @@ int omap_gem_resume(struct drm_device *dev)
1011 omap_obj->roll, true); 1012 omap_obj->roll, true);
1012 if (ret) { 1013 if (ret) {
1013 dev_err(dev->dev, "could not repin: %d\n", ret); 1014 dev_err(dev->dev, "could not repin: %d\n", ret);
1014 return ret; 1015 goto done;
1015 } 1016 }
1016 } 1017 }
1017 } 1018 }
1018 1019
1019 return 0; 1020done:
1021 mutex_unlock(&priv->list_lock);
1022 return ret;
1020} 1023}
1021#endif 1024#endif
1022 1025
@@ -1086,9 +1089,9 @@ void omap_gem_free_object(struct drm_gem_object *obj)
1086 1089
1087 omap_gem_evict(obj); 1090 omap_gem_evict(obj);
1088 1091
1089 spin_lock(&priv->list_lock); 1092 mutex_lock(&priv->list_lock);
1090 list_del(&omap_obj->mm_list); 1093 list_del(&omap_obj->mm_list);
1091 spin_unlock(&priv->list_lock); 1094 mutex_unlock(&priv->list_lock);
1092 1095
1093 /* 1096 /*
1094 * We own the sole reference to the object at this point, but to keep 1097 * We own the sole reference to the object at this point, but to keep
@@ -1218,9 +1221,9 @@ struct drm_gem_object *omap_gem_new(struct drm_device *dev,
1218 goto err_release; 1221 goto err_release;
1219 } 1222 }
1220 1223
1221 spin_lock(&priv->list_lock); 1224 mutex_lock(&priv->list_lock);
1222 list_add(&omap_obj->mm_list, &priv->obj_list); 1225 list_add(&omap_obj->mm_list, &priv->obj_list);
1223 spin_unlock(&priv->list_lock); 1226 mutex_unlock(&priv->list_lock);
1224 1227
1225 return obj; 1228 return obj;
1226 1229