disp: msm: remap dmabuf attach during secure transitions
During secure cb detach, gem objects stored in the aspace active list are not cleaned up properly leading to crash when secure cb attaches again. This change remaps dma buffer for those gem objects. Change-Id: I7626e87ab60a61261c802a7e7763982546c4c2e7 Signed-off-by: Yashwanth <yvulapu@codeaurora.org>
This commit is contained in:

committed by
Gerrit - the friendly Code Review server

parent
f97e75d7ab
commit
9d7c72743d
@@ -421,8 +421,9 @@ static int msm_gem_get_iova_locked(struct drm_gem_object *obj,
|
||||
bool reattach = false;
|
||||
|
||||
dev = msm_gem_get_aspace_device(aspace);
|
||||
if (dev && obj->import_attach &&
|
||||
(dev != obj->import_attach->dev)) {
|
||||
if ((dev && obj->import_attach) &&
|
||||
((dev != obj->import_attach->dev) ||
|
||||
msm_obj->obj_dirty)) {
|
||||
dmabuf = obj->import_attach->dmabuf;
|
||||
|
||||
DRM_DEBUG("detach nsec-dev:%pK attach sec-dev:%pK\n",
|
||||
@@ -440,6 +441,7 @@ static int msm_gem_get_iova_locked(struct drm_gem_object *obj,
|
||||
PTR_ERR(obj->import_attach));
|
||||
goto unlock;
|
||||
}
|
||||
msm_obj->obj_dirty = false;
|
||||
reattach = true;
|
||||
}
|
||||
|
||||
@@ -631,6 +633,7 @@ void msm_gem_aspace_domain_attach_detach_update(
|
||||
if (obj->import_attach) {
|
||||
mutex_lock(&msm_obj->lock);
|
||||
put_iova(obj);
|
||||
msm_obj->obj_dirty = true;
|
||||
mutex_unlock(&msm_obj->lock);
|
||||
}
|
||||
}
|
||||
@@ -1091,6 +1094,7 @@ static int msm_gem_new_impl(struct drm_device *dev,
|
||||
INIT_LIST_HEAD(&msm_obj->iova_list);
|
||||
msm_obj->aspace = NULL;
|
||||
msm_obj->in_active_list = false;
|
||||
msm_obj->obj_dirty = false;
|
||||
|
||||
if (struct_mutex_locked) {
|
||||
WARN_ON(!mutex_is_locked(&dev->struct_mutex));
|
||||
|
Reference in New Issue
Block a user