Merge "msm: sde: prevent illegal register access"
This commit is contained in:

committed by
Gerrit - the friendly Code Review server

commit
c7ba46d5bf
@@ -4585,6 +4585,7 @@ static int _sde_kms_register_events(struct msm_kms *kms,
|
|||||||
struct drm_crtc *crtc = NULL;
|
struct drm_crtc *crtc = NULL;
|
||||||
struct drm_connector *conn = NULL;
|
struct drm_connector *conn = NULL;
|
||||||
struct sde_kms *sde_kms = NULL;
|
struct sde_kms *sde_kms = NULL;
|
||||||
|
struct sde_vm_ops *vm_ops;
|
||||||
|
|
||||||
if (!kms || !obj) {
|
if (!kms || !obj) {
|
||||||
SDE_ERROR("invalid argument kms %pK obj %pK\n", kms, obj);
|
SDE_ERROR("invalid argument kms %pK obj %pK\n", kms, obj);
|
||||||
@@ -4592,6 +4593,14 @@ static int _sde_kms_register_events(struct msm_kms *kms,
|
|||||||
}
|
}
|
||||||
|
|
||||||
sde_kms = to_sde_kms(kms);
|
sde_kms = to_sde_kms(kms);
|
||||||
|
vm_ops = sde_vm_get_ops(sde_kms);
|
||||||
|
sde_vm_lock(sde_kms);
|
||||||
|
if (vm_ops && vm_ops->vm_owns_hw && !vm_ops->vm_owns_hw(sde_kms)) {
|
||||||
|
sde_vm_unlock(sde_kms);
|
||||||
|
DRM_INFO("HW is owned by other VM\n");
|
||||||
|
return -EACCES;
|
||||||
|
}
|
||||||
|
|
||||||
switch (obj->type) {
|
switch (obj->type) {
|
||||||
case DRM_MODE_OBJECT_CRTC:
|
case DRM_MODE_OBJECT_CRTC:
|
||||||
crtc = obj_to_crtc(obj);
|
crtc = obj_to_crtc(obj);
|
||||||
@@ -4604,6 +4613,7 @@ static int _sde_kms_register_events(struct msm_kms *kms,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sde_vm_unlock(sde_kms);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user