Skip to content

Commit

Permalink
drm: get rid of direct property value access
Browse files Browse the repository at this point in the history
For atomic drivers, we won't use the values array but instead shunt
things off to obj->atomic_get_property().  So to simplify things make
all read/write of properties values go through the accessors.

Signed-off-by: Rob Clark <robdclark@gmail.com>
Reviewed-by: Sean Paul <seanpaul@chromium.org>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
  • Loading branch information
Rob Clark authored and Daniel Vetter committed Dec 17, 2014
1 parent b17cd75 commit 22b8b13
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 4 deletions.
19 changes: 15 additions & 4 deletions drivers/gpu/drm/drm_crtc.c
Original file line number Diff line number Diff line change
Expand Up @@ -2106,12 +2106,17 @@ int drm_mode_getconnector(struct drm_device *dev, void *data,
prop_values = (uint64_t __user *)(unsigned long)(out_resp->prop_values_ptr);
for (i = 0; i < connector->properties.count; i++) {
struct drm_property *prop = connector->properties.properties[i];
uint64_t val;

ret = drm_object_property_get_value(&connector->base, prop, &val);
if (ret)
goto out;

if (put_user(prop->base.id, prop_ptr + copied)) {
ret = -EFAULT;
goto out;
}
if (put_user(connector->properties.values[i],
prop_values + copied)) {
if (put_user(val, prop_values + copied)) {
ret = -EFAULT;
goto out;
}
Expand Down Expand Up @@ -4413,12 +4418,18 @@ int drm_mode_obj_get_properties_ioctl(struct drm_device *dev, void *data,
(arg->prop_values_ptr);
for (i = 0; i < props_count; i++) {
struct drm_property *prop = obj->properties->properties[i];
uint64_t val;

ret = drm_object_property_get_value(obj, prop, &val);
if (ret)
goto out;

if (put_user(prop->base.id, props_ptr + copied)) {
ret = -EFAULT;
goto out;
}
if (put_user(obj->properties->values[i],
prop_values_ptr + copied)) {

if (put_user(val, prop_values_ptr + copied)) {
ret = -EFAULT;
goto out;
}
Expand Down
3 changes: 3 additions & 0 deletions include/drm/drm_crtc.h
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,9 @@ struct drm_object_properties {
* dangling property pointers:
*/
struct drm_property *properties[DRM_OBJECT_MAX_PROPERTY];
/* do not read/write values directly, but use drm_object_property_get_value()
* and drm_object_property_set_value():
*/
uint64_t values[DRM_OBJECT_MAX_PROPERTY];
};

Expand Down

0 comments on commit 22b8b13

Please sign in to comment.