drm: Pass struct drm_file * to __drm_mode_object_find [v2]
authorKeith Packard <keithp@keithp.com>
Wed, 8 Nov 2017 12:08:19 +0000 (14:08 +0200)
committerNitin Garg <nitin.garg@nxp.com>
Mon, 19 Mar 2018 20:39:17 +0000 (15:39 -0500)
This will allow __drm_mode_object_file to be extended to perform
access control checks based on the file in use.

v2: Also fix up vboxvideo driver in staging

[airlied: merging early as this is an API change]

Suggested-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Keith Packard <keithp@keithp.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Signed-off-by: Marius Vlad <marius-cristian.vlad@nxp.com>
31 files changed:
drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c
drivers/gpu/drm/ast/ast_mode.c
drivers/gpu/drm/cirrus/cirrus_mode.c
drivers/gpu/drm/drm_atomic.c
drivers/gpu/drm/drm_atomic_helper.c
drivers/gpu/drm/drm_color_mgmt.c
drivers/gpu/drm/drm_connector.c
drivers/gpu/drm/drm_crtc.c
drivers/gpu/drm/drm_crtc_internal.h
drivers/gpu/drm/drm_encoder.c
drivers/gpu/drm/drm_framebuffer.c
drivers/gpu/drm/drm_mode_object.c
drivers/gpu/drm/drm_property.c
drivers/gpu/drm/i915/intel_display.c
drivers/gpu/drm/i915/intel_overlay.c
drivers/gpu/drm/i915/intel_sprite.c
drivers/gpu/drm/mgag200/mgag200_mode.c
drivers/gpu/drm/nouveau/nouveau_connector.c
drivers/gpu/drm/radeon/r100.c
drivers/gpu/drm/radeon/r600_cs.c
drivers/gpu/drm/radeon/radeon_connectors.c
drivers/gpu/drm/udl/udl_connector.c
drivers/gpu/drm/vmwgfx/vmwgfx_ioctl.c
drivers/gpu/drm/vmwgfx/vmwgfx_kms.c
include/drm/drm_connector.h
include/drm/drm_crtc.h
include/drm/drm_encoder.h
include/drm/drm_framebuffer.h
include/drm/drm_mode_object.h
include/drm/drm_plane.h
include/drm/drm_property.h

index c82b04b..5e8ac83 100644 (file)
@@ -231,7 +231,7 @@ amdgpu_connector_update_scratch_regs(struct drm_connector *connector,
                if (connector->encoder_ids[i] == 0)
                        break;
 
-               encoder = drm_encoder_find(connector->dev,
+               encoder = drm_encoder_find(connector->dev, NULL,
                                        connector->encoder_ids[i]);
                if (!encoder)
                        continue;
@@ -256,7 +256,7 @@ amdgpu_connector_find_encoder(struct drm_connector *connector,
        for (i = 0; i < DRM_CONNECTOR_MAX_ENCODER; i++) {
                if (connector->encoder_ids[i] == 0)
                        break;
-               encoder = drm_encoder_find(connector->dev,
+               encoder = drm_encoder_find(connector->dev, NULL,
                                        connector->encoder_ids[i]);
                if (!encoder)
                        continue;
@@ -374,7 +374,7 @@ amdgpu_connector_best_single_encoder(struct drm_connector *connector)
 
        /* pick the encoder ids */
        if (enc_id)
-               return drm_encoder_find(connector->dev, enc_id);
+               return drm_encoder_find(connector->dev, NULL, enc_id);
        return NULL;
 }
 
@@ -1091,7 +1091,7 @@ amdgpu_connector_dvi_detect(struct drm_connector *connector, bool force)
                        if (connector->encoder_ids[i] == 0)
                                break;
 
-                       encoder = drm_encoder_find(connector->dev, connector->encoder_ids[i]);
+                       encoder = drm_encoder_find(connector->dev, NULL, connector->encoder_ids[i]);
                        if (!encoder)
                                continue;
 
@@ -1150,7 +1150,7 @@ amdgpu_connector_dvi_encoder(struct drm_connector *connector)
                if (connector->encoder_ids[i] == 0)
                        break;
 
-               encoder = drm_encoder_find(connector->dev, connector->encoder_ids[i]);
+               encoder = drm_encoder_find(connector->dev, NULL, connector->encoder_ids[i]);
                if (!encoder)
                        continue;
 
@@ -1169,7 +1169,7 @@ amdgpu_connector_dvi_encoder(struct drm_connector *connector)
        /* then check use digitial */
        /* pick the first one */
        if (enc_id)
-               return drm_encoder_find(connector->dev, enc_id);
+               return drm_encoder_find(connector->dev, NULL, enc_id);
        return NULL;
 }
 
@@ -1310,7 +1310,7 @@ u16 amdgpu_connector_encoder_get_dp_bridge_encoder_id(struct drm_connector *conn
                if (connector->encoder_ids[i] == 0)
                        break;
 
-               encoder = drm_encoder_find(connector->dev,
+               encoder = drm_encoder_find(connector->dev, NULL,
                                        connector->encoder_ids[i]);
                if (!encoder)
                        continue;
@@ -1339,7 +1339,7 @@ static bool amdgpu_connector_encoder_is_hbr2(struct drm_connector *connector)
        for (i = 0; i < DRM_CONNECTOR_MAX_ENCODER; i++) {
                if (connector->encoder_ids[i] == 0)
                        break;
-               encoder = drm_encoder_find(connector->dev,
+               encoder = drm_encoder_find(connector->dev, NULL,
                                        connector->encoder_ids[i]);
                if (!encoder)
                        continue;
@@ -1545,7 +1545,7 @@ amdgpu_connector_virtual_encoder(struct drm_connector *connector)
                if (connector->encoder_ids[i] == 0)
                        break;
 
-               encoder = drm_encoder_find(connector->dev, connector->encoder_ids[i]);
+               encoder = drm_encoder_find(connector->dev, NULL, connector->encoder_ids[i]);
                if (!encoder)
                        continue;
 
@@ -1555,7 +1555,7 @@ amdgpu_connector_virtual_encoder(struct drm_connector *connector)
 
        /* pick the first one */
        if (enc_id)
-               return drm_encoder_find(connector->dev, enc_id);
+               return drm_encoder_find(connector->dev, NULL, enc_id);
        return NULL;
 }
 
index 5957c3e..f362cc4 100644 (file)
@@ -690,7 +690,7 @@ static struct drm_encoder *ast_best_single_encoder(struct drm_connector *connect
        int enc_id = connector->encoder_ids[0];
        /* pick the encoder ids */
        if (enc_id)
-               return drm_encoder_find(connector->dev, enc_id);
+               return drm_encoder_find(connector->dev, NULL, enc_id);
        return NULL;
 }
 
index 17c915d..aab936d 100644 (file)
@@ -494,7 +494,7 @@ static struct drm_encoder *cirrus_connector_best_encoder(struct drm_connector
        int enc_id = connector->encoder_ids[0];
        /* pick the encoder ids */
        if (enc_id)
-               return drm_encoder_find(connector->dev, enc_id);
+               return drm_encoder_find(connector->dev, NULL, enc_id);
        return NULL;
 }
 
index 34adde1..60a1fea 100644 (file)
@@ -689,12 +689,12 @@ int drm_atomic_plane_set_property(struct drm_plane *plane,
        struct drm_mode_config *config = &dev->mode_config;
 
        if (property == config->prop_fb_id) {
-               struct drm_framebuffer *fb = drm_framebuffer_lookup(dev, val);
+               struct drm_framebuffer *fb = drm_framebuffer_lookup(dev, NULL, val);
                drm_atomic_set_fb_for_plane(state, fb);
                if (fb)
                        drm_framebuffer_unreference(fb);
        } else if (property == config->prop_crtc_id) {
-               struct drm_crtc *crtc = drm_crtc_find(dev, val);
+               struct drm_crtc *crtc = drm_crtc_find(dev, NULL, val);
                return drm_atomic_set_crtc_for_plane(state, crtc);
        } else if (property == config->prop_crtc_x) {
                state->crtc_x = U642I64(val);
@@ -981,7 +981,7 @@ int drm_atomic_connector_set_property(struct drm_connector *connector,
        struct drm_mode_config *config = &dev->mode_config;
 
        if (property == config->prop_crtc_id) {
-               struct drm_crtc *crtc = drm_crtc_find(dev, val);
+               struct drm_crtc *crtc = drm_crtc_find(dev, NULL, val);
                return drm_atomic_set_crtc_for_connector(state, crtc);
        } else if (property == config->dpms_property) {
                /* setting DPMS property requires special handling, which
@@ -1666,7 +1666,7 @@ retry:
                        goto out;
                }
 
-               obj = drm_mode_object_find(dev, obj_id, DRM_MODE_OBJECT_ANY);
+               obj = drm_mode_object_find(dev, file_priv, obj_id, DRM_MODE_OBJECT_ANY);
                if (!obj) {
                        ret = -ENOENT;
                        goto out;
index 50acd79..fefafcd 100644 (file)
@@ -2957,7 +2957,7 @@ struct drm_encoder *
 drm_atomic_helper_best_encoder(struct drm_connector *connector)
 {
        WARN_ON(connector->encoder_ids[1]);
-       return drm_encoder_find(connector->dev, connector->encoder_ids[0]);
+       return drm_encoder_find(connector->dev, NULL, connector->encoder_ids[0]);
 }
 EXPORT_SYMBOL(drm_atomic_helper_best_encoder);
 
index d28ffdd..d4a0373 100644 (file)
@@ -188,7 +188,7 @@ int drm_mode_gamma_set_ioctl(struct drm_device *dev,
                return -EINVAL;
 
        drm_modeset_lock_all(dev);
-       crtc = drm_crtc_find(dev, crtc_lut->crtc_id);
+       crtc = drm_crtc_find(dev, file_priv, crtc_lut->crtc_id);
        if (!crtc) {
                ret = -ENOENT;
                goto out;
@@ -260,7 +260,7 @@ int drm_mode_gamma_get_ioctl(struct drm_device *dev,
                return -EINVAL;
 
        drm_modeset_lock_all(dev);
-       crtc = drm_crtc_find(dev, crtc_lut->crtc_id);
+       crtc = drm_crtc_find(dev, file_priv, crtc_lut->crtc_id);
        if (!crtc) {
                ret = -ENOENT;
                goto out;
index 0e934a9..e79b416 100644 (file)
@@ -1043,7 +1043,7 @@ int drm_mode_getconnector(struct drm_device *dev, void *data,
 
        mutex_lock(&dev->mode_config.mutex);
 
-       connector = drm_connector_lookup(dev, out_resp->connector_id);
+       connector = drm_connector_lookup(dev, file_priv, out_resp->connector_id);
        if (!connector) {
                ret = -ENOENT;
                goto out_unlock;
index 2d7bedf..da001be 100644 (file)
@@ -572,7 +572,7 @@ int drm_mode_getcrtc(struct drm_device *dev,
        if (!drm_core_check_feature(dev, DRIVER_MODESET))
                return -EINVAL;
 
-       crtc = drm_crtc_find(dev, crtc_resp->crtc_id);
+       crtc = drm_crtc_find(dev, file_priv, crtc_resp->crtc_id);
        if (!crtc)
                return -ENOENT;
 
@@ -743,7 +743,7 @@ int drm_mode_setcrtc(struct drm_device *dev, void *data,
                return -ERANGE;
 
        drm_modeset_lock_all(dev);
-       crtc = drm_crtc_find(dev, crtc_req->crtc_id);
+       crtc = drm_crtc_find(dev, file_priv, crtc_req->crtc_id);
        if (!crtc) {
                DRM_DEBUG_KMS("Unknown CRTC ID %d\n", crtc_req->crtc_id);
                ret = -ENOENT;
@@ -764,7 +764,7 @@ int drm_mode_setcrtc(struct drm_device *dev, void *data,
                        /* Make refcounting symmetric with the lookup path. */
                        drm_framebuffer_reference(fb);
                } else {
-                       fb = drm_framebuffer_lookup(dev, crtc_req->fb_id);
+                       fb = drm_framebuffer_lookup(dev, file_priv, crtc_req->fb_id);
                        if (!fb) {
                                DRM_DEBUG_KMS("Unknown FB ID%d\n",
                                                crtc_req->fb_id);
@@ -848,7 +848,7 @@ int drm_mode_setcrtc(struct drm_device *dev, void *data,
                                goto out;
                        }
 
-                       connector = drm_connector_lookup(dev, out_id);
+                       connector = drm_connector_lookup(dev, file_priv, out_id);
                        if (!connector) {
                                DRM_DEBUG_KMS("Connector id %d unknown\n",
                                                out_id);
index c48ba02..4d4a2cf 100644 (file)
@@ -97,6 +97,7 @@ void drm_mode_object_register(struct drm_device *dev,
 int drm_mode_object_get(struct drm_device *dev,
                        struct drm_mode_object *obj, uint32_t obj_type);
 struct drm_mode_object *__drm_mode_object_find(struct drm_device *dev,
+                                              struct drm_file *file_priv,
                                               uint32_t id, uint32_t type);
 void drm_mode_object_unregister(struct drm_device *dev,
                                struct drm_mode_object *object);
index 5c06771..75d43d3 100644 (file)
@@ -212,7 +212,7 @@ int drm_mode_getencoder(struct drm_device *dev, void *data,
        if (!drm_core_check_feature(dev, DRIVER_MODESET))
                return -EINVAL;
 
-       encoder = drm_encoder_find(dev, enc_resp->encoder_id);
+       encoder = drm_encoder_find(dev, file_priv, enc_resp->encoder_id);
        if (!encoder)
                return -ENOENT;
 
index 398efd6..62d4537 100644 (file)
@@ -427,7 +427,7 @@ int drm_mode_rmfb(struct drm_device *dev,
        if (!drm_core_check_feature(dev, DRIVER_MODESET))
                return -EINVAL;
 
-       fb = drm_framebuffer_lookup(dev, *id);
+       fb = drm_framebuffer_lookup(dev, file_priv, *id);
        if (!fb)
                return -ENOENT;
 
@@ -496,7 +496,7 @@ int drm_mode_getfb(struct drm_device *dev,
        if (!drm_core_check_feature(dev, DRIVER_MODESET))
                return -EINVAL;
 
-       fb = drm_framebuffer_lookup(dev, r->fb_id);
+       fb = drm_framebuffer_lookup(dev, file_priv, r->fb_id);
        if (!fb)
                return -ENOENT;
 
@@ -561,7 +561,7 @@ int drm_mode_dirtyfb_ioctl(struct drm_device *dev,
        if (!drm_core_check_feature(dev, DRIVER_MODESET))
                return -EINVAL;
 
-       fb = drm_framebuffer_lookup(dev, r->fb_id);
+       fb = drm_framebuffer_lookup(dev, file_priv, r->fb_id);
        if (!fb)
                return -ENOENT;
 
@@ -731,12 +731,13 @@ EXPORT_SYMBOL(drm_framebuffer_init);
  * again, using @drm_framebuffer_unreference.
  */
 struct drm_framebuffer *drm_framebuffer_lookup(struct drm_device *dev,
+                                              struct drm_file *file_priv,
                                               uint32_t id)
 {
        struct drm_mode_object *obj;
        struct drm_framebuffer *fb = NULL;
 
-       obj = __drm_mode_object_find(dev, id, DRM_MODE_OBJECT_FB);
+       obj = __drm_mode_object_find(dev, file_priv, id, DRM_MODE_OBJECT_FB);
        if (obj)
                fb = obj_to_fb(obj);
        return fb;
index 9f17085..9696e2c 100644 (file)
@@ -108,6 +108,7 @@ void drm_mode_object_unregister(struct drm_device *dev,
 }
 
 struct drm_mode_object *__drm_mode_object_find(struct drm_device *dev,
+                                              struct drm_file *file_priv,
                                               uint32_t id, uint32_t type)
 {
        struct drm_mode_object *obj = NULL;
@@ -139,11 +140,12 @@ struct drm_mode_object *__drm_mode_object_find(struct drm_device *dev,
  * by callind drm_mode_object_unreference().
  */
 struct drm_mode_object *drm_mode_object_find(struct drm_device *dev,
-               uint32_t id, uint32_t type)
+                                            struct drm_file *file_priv,
+                                            uint32_t id, uint32_t type)
 {
        struct drm_mode_object *obj = NULL;
 
-       obj = __drm_mode_object_find(dev, id, type);
+       obj = __drm_mode_object_find(dev, file_priv, id, type);
        return obj;
 }
 EXPORT_SYMBOL(drm_mode_object_find);
@@ -350,7 +352,7 @@ int drm_mode_obj_get_properties_ioctl(struct drm_device *dev, void *data,
 
        drm_modeset_lock_all(dev);
 
-       obj = drm_mode_object_find(dev, arg->obj_id, arg->obj_type);
+       obj = drm_mode_object_find(dev, file_priv, arg->obj_id, arg->obj_type);
        if (!obj) {
                ret = -ENOENT;
                goto out;
@@ -398,7 +400,7 @@ int drm_mode_obj_set_property_ioctl(struct drm_device *dev, void *data,
 
        drm_modeset_lock_all(dev);
 
-       arg_obj = drm_mode_object_find(dev, arg->obj_id, arg->obj_type);
+       arg_obj = drm_mode_object_find(dev, file_priv, arg->obj_id, arg->obj_type);
        if (!arg_obj) {
                ret = -ENOENT;
                goto out;
index a4d81cf..96f9060 100644 (file)
@@ -452,7 +452,7 @@ int drm_mode_getproperty_ioctl(struct drm_device *dev,
                return -EINVAL;
 
        drm_modeset_lock_all(dev);
-       property = drm_property_find(dev, out_resp->prop_id);
+       property = drm_property_find(dev, file_priv, out_resp->prop_id);
        if (!property) {
                ret = -ENOENT;
                goto done;
@@ -648,7 +648,7 @@ struct drm_property_blob *drm_property_lookup_blob(struct drm_device *dev,
        struct drm_mode_object *obj;
        struct drm_property_blob *blob = NULL;
 
-       obj = __drm_mode_object_find(dev, id, DRM_MODE_OBJECT_BLOB);
+       obj = __drm_mode_object_find(dev, NULL, id, DRM_MODE_OBJECT_BLOB);
        if (obj)
                blob = obj_to_blob(obj);
        return blob;
@@ -888,7 +888,7 @@ bool drm_property_change_valid_get(struct drm_property *property,
                if (value == 0)
                        return true;
 
-               *ref = __drm_mode_object_find(property->dev, value,
+               *ref = __drm_mode_object_find(property->dev, NULL, value,
                                              property->values[0]);
                return *ref != NULL;
        }
index ce32303..ab741eb 100644 (file)
@@ -15305,7 +15305,7 @@ int intel_get_pipe_from_crtc_id(struct drm_device *dev, void *data,
        struct drm_crtc *drmmode_crtc;
        struct intel_crtc *crtc;
 
-       drmmode_crtc = drm_crtc_find(dev, pipe_from_crtc_id->crtc_id);
+       drmmode_crtc = drm_crtc_find(dev, file, pipe_from_crtc_id->crtc_id);
        if (!drmmode_crtc)
                return -ENOENT;
 
index 8ab6f30..cc33700 100644 (file)
@@ -1136,7 +1136,7 @@ int intel_overlay_put_image_ioctl(struct drm_device *dev, void *data,
        if (!params)
                return -ENOMEM;
 
-       drmmode_crtc = drm_crtc_find(dev, put_image_rec->crtc_id);
+       drmmode_crtc = drm_crtc_find(dev, file_priv, put_image_rec->crtc_id);
        if (!drmmode_crtc) {
                ret = -ENOENT;
                goto out_free;
index 64f4e2e..9f41649 100644 (file)
@@ -980,7 +980,7 @@ int intel_sprite_set_colorkey(struct drm_device *dev, void *data,
            set->flags & I915_SET_COLORKEY_DESTINATION)
                return -EINVAL;
 
-       plane = drm_plane_find(dev, set->plane_id);
+       plane = drm_plane_find(dev, file_priv, set->plane_id);
        if (!plane || plane->type != DRM_PLANE_TYPE_OVERLAY)
                return -ENOENT;
 
index 6b21cb2..458b0f1 100644 (file)
@@ -1654,7 +1654,7 @@ static struct drm_encoder *mga_connector_best_encoder(struct drm_connector
        int enc_id = connector->encoder_ids[0];
        /* pick the encoder ids */
        if (enc_id)
-               return drm_encoder_find(connector->dev, enc_id);
+               return drm_encoder_find(connector->dev, NULL, enc_id);
        return NULL;
 }
 
index 56c288f..365d769 100644 (file)
@@ -76,7 +76,7 @@ find_encoder(struct drm_connector *connector, int type)
                if (!id)
                        break;
 
-               enc = drm_encoder_find(dev, id);
+               enc = drm_encoder_find(dev, NULL, id);
                if (!enc)
                        continue;
                nv_encoder = nouveau_encoder(enc);
@@ -144,7 +144,7 @@ nouveau_connector_ddc_detect(struct drm_connector *connector)
                if (id == 0)
                        break;
 
-               encoder = drm_encoder_find(dev, id);
+               encoder = drm_encoder_find(dev, NULL, id);
                if (!encoder)
                        continue;
                nv_encoder = nouveau_encoder(encoder);
index f5e84f4..98fcf77 100644 (file)
@@ -1460,7 +1460,7 @@ int r100_cs_packet_parse_vline(struct radeon_cs_parser *p)
        header = radeon_get_ib_value(p, h_idx);
        crtc_id = radeon_get_ib_value(p, h_idx + 5);
        reg = R100_CP_PACKET0_GET_REG(header);
-       crtc = drm_crtc_find(p->rdev->ddev, crtc_id);
+       crtc = drm_crtc_find(p->rdev->ddev, p->flip, crtc_id);
        if (!crtc) {
                DRM_ERROR("cannot find crtc %d\n", crtc_id);
                return -ENOENT;
index b69c8de..c22b065 100644 (file)
@@ -886,7 +886,7 @@ int r600_cs_common_vline_parse(struct radeon_cs_parser *p,
        crtc_id = radeon_get_ib_value(p, h_idx + 2 + 7 + 1);
        reg = R600_CP_PACKET0_GET_REG(header);
 
-       crtc = drm_crtc_find(p->rdev->ddev, crtc_id);
+       crtc = drm_crtc_find(p->rdev->ddev, p->flip, crtc_id);
        if (!crtc) {
                DRM_ERROR("cannot find crtc %d\n", crtc_id);
                return -ENOENT;
index af0d7fd..40db774 100644 (file)
@@ -263,7 +263,7 @@ radeon_connector_update_scratch_regs(struct drm_connector *connector, enum drm_c
                if (connector->encoder_ids[i] == 0)
                        break;
 
-               encoder = drm_encoder_find(connector->dev,
+               encoder = drm_encoder_find(connector->dev, NULL,
                                           connector->encoder_ids[i]);
                if (!encoder)
                        continue;
@@ -290,7 +290,7 @@ static struct drm_encoder *radeon_find_encoder(struct drm_connector *connector,
                if (connector->encoder_ids[i] == 0)
                        break;
 
-               encoder = drm_encoder_find(connector->dev, connector->encoder_ids[i]);
+               encoder = drm_encoder_find(connector->dev, NULL, connector->encoder_ids[i]);
                if (!encoder)
                        continue;
 
@@ -404,7 +404,7 @@ static struct drm_encoder *radeon_best_single_encoder(struct drm_connector *conn
        int enc_id = connector->encoder_ids[0];
        /* pick the encoder ids */
        if (enc_id)
-               return drm_encoder_find(connector->dev, enc_id);
+               return drm_encoder_find(connector->dev, NULL, enc_id);
        return NULL;
 }
 
@@ -1383,7 +1383,7 @@ radeon_dvi_detect(struct drm_connector *connector, bool force)
                        if (connector->encoder_ids[i] == 0)
                                break;
 
-                       encoder = drm_encoder_find(connector->dev,
+                       encoder = drm_encoder_find(connector->dev, NULL,
                                                   connector->encoder_ids[i]);
                        if (!encoder)
                                continue;
@@ -1471,7 +1471,7 @@ static struct drm_encoder *radeon_dvi_encoder(struct drm_connector *connector)
                if (connector->encoder_ids[i] == 0)
                        break;
 
-               encoder = drm_encoder_find(connector->dev, connector->encoder_ids[i]);
+               encoder = drm_encoder_find(connector->dev, NULL, connector->encoder_ids[i]);
                if (!encoder)
                        continue;
 
@@ -1490,7 +1490,7 @@ static struct drm_encoder *radeon_dvi_encoder(struct drm_connector *connector)
        /* then check use digitial */
        /* pick the first one */
        if (enc_id)
-               return drm_encoder_find(connector->dev, enc_id);
+               return drm_encoder_find(connector->dev, NULL, enc_id);
        return NULL;
 }
 
@@ -1637,7 +1637,7 @@ u16 radeon_connector_encoder_get_dp_bridge_encoder_id(struct drm_connector *conn
                if (connector->encoder_ids[i] == 0)
                        break;
 
-               encoder = drm_encoder_find(connector->dev, connector->encoder_ids[i]);
+               encoder = drm_encoder_find(connector->dev, NULL, connector->encoder_ids[i]);
                if (!encoder)
                        continue;
 
index d2f57c5..59de243 100644 (file)
@@ -105,7 +105,7 @@ static struct drm_encoder*
 udl_best_single_encoder(struct drm_connector *connector)
 {
        int enc_id = connector->encoder_ids[0];
-       return drm_encoder_find(connector->dev, enc_id);
+       return drm_encoder_find(connector->dev, NULL, enc_id);
 }
 
 static int udl_connector_set_property(struct drm_connector *connector,
index 5ec24fd..01be355 100644 (file)
@@ -286,7 +286,7 @@ int vmw_present_ioctl(struct drm_device *dev, void *data,
 
        drm_modeset_lock_all(dev);
 
-       fb = drm_framebuffer_lookup(dev, arg->fb_id);
+       fb = drm_framebuffer_lookup(dev, file_priv, arg->fb_id);
        if (!fb) {
                DRM_ERROR("Invalid framebuffer id.\n");
                ret = -ENOENT;
@@ -369,7 +369,7 @@ int vmw_present_readback_ioctl(struct drm_device *dev, void *data,
 
        drm_modeset_lock_all(dev);
 
-       fb = drm_framebuffer_lookup(dev, arg->fb_id);
+       fb = drm_framebuffer_lookup(dev, file_priv, arg->fb_id);
        if (!fb) {
                DRM_ERROR("Invalid framebuffer id.\n");
                ret = -ENOENT;
index bf28ccc..08932be 100644 (file)
@@ -1191,7 +1191,7 @@ int vmw_kms_cursor_bypass_ioctl(struct drm_device *dev, void *data,
                return 0;
        }
 
-       crtc = drm_crtc_find(dev, arg->crtc_id);
+       crtc = drm_crtc_find(dev, file_priv, arg->crtc_id);
        if (!crtc) {
                ret = -ENOENT;
                goto out;
index d8bb8d1..d6c7964 100644 (file)
@@ -724,10 +724,11 @@ static inline unsigned drm_connector_index(struct drm_connector *connector)
  * add takes a reference to it.
  */
 static inline struct drm_connector *drm_connector_lookup(struct drm_device *dev,
-               uint32_t id)
+                                                        struct drm_file *file_priv,
+                                                        uint32_t id)
 {
        struct drm_mode_object *mo;
-       mo = drm_mode_object_find(dev, id, DRM_MODE_OBJECT_CONNECTOR);
+       mo = drm_mode_object_find(dev, file_priv, id, DRM_MODE_OBJECT_CONNECTOR);
        return mo ? obj_to_connector(mo) : NULL;
 }
 
index 0aa2925..d68fd8b 100644 (file)
@@ -1379,10 +1379,11 @@ extern void drm_mode_put_tile_group(struct drm_device *dev,
 
 /* Helpers */
 static inline struct drm_crtc *drm_crtc_find(struct drm_device *dev,
-       uint32_t id)
+                                            struct drm_file *file_priv,
+                                            uint32_t id)
 {
        struct drm_mode_object *mo;
-       mo = drm_mode_object_find(dev, id, DRM_MODE_OBJECT_CRTC);
+       mo = drm_mode_object_find(dev, file_priv, id, DRM_MODE_OBJECT_CRTC);
        return mo ? obj_to_crtc(mo) : NULL;
 }
 
index 387e33a..a9a0199 100644 (file)
@@ -213,11 +213,12 @@ static inline bool drm_encoder_crtc_ok(struct drm_encoder *encoder,
  * drm_mode_object_find().
  */
 static inline struct drm_encoder *drm_encoder_find(struct drm_device *dev,
+                                                  struct drm_file *file_priv,
                                                   uint32_t id)
 {
        struct drm_mode_object *mo;
 
-       mo = drm_mode_object_find(dev, id, DRM_MODE_OBJECT_ENCODER);
+       mo = drm_mode_object_find(dev, file_priv, id, DRM_MODE_OBJECT_ENCODER);
 
        return mo ? obj_to_encoder(mo) : NULL;
 }
index f5ae1f4..107f7b0 100644 (file)
@@ -212,6 +212,7 @@ int drm_framebuffer_init(struct drm_device *dev,
                         struct drm_framebuffer *fb,
                         const struct drm_framebuffer_funcs *funcs);
 struct drm_framebuffer *drm_framebuffer_lookup(struct drm_device *dev,
+                                              struct drm_file *file_priv,
                                               uint32_t id);
 void drm_framebuffer_remove(struct drm_framebuffer *fb);
 void drm_framebuffer_cleanup(struct drm_framebuffer *fb);
index 43460b2..0181fc9 100644 (file)
@@ -27,6 +27,7 @@
 struct drm_object_properties;
 struct drm_property;
 struct drm_device;
+struct drm_file;
 
 /**
  * struct drm_mode_object - base structure for modeset objects
@@ -108,6 +109,7 @@ struct drm_object_properties {
        }
 
 struct drm_mode_object *drm_mode_object_find(struct drm_device *dev,
+                                            struct drm_file *file_priv,
                                             uint32_t id, uint32_t type);
 void drm_mode_object_reference(struct drm_mode_object *obj);
 void drm_mode_object_unreference(struct drm_mode_object *obj);
index 8b4dc62..99a03d6 100644 (file)
@@ -486,10 +486,11 @@ int drm_mode_plane_set_obj_prop(struct drm_plane *plane,
  * drm_mode_object_find().
  */
 static inline struct drm_plane *drm_plane_find(struct drm_device *dev,
+               struct drm_file *file_priv,
                uint32_t id)
 {
        struct drm_mode_object *mo;
-       mo = drm_mode_object_find(dev, id, DRM_MODE_OBJECT_PLANE);
+       mo = drm_mode_object_find(dev, file_priv, id, DRM_MODE_OBJECT_PLANE);
        return mo ? obj_to_plane(mo) : NULL;
 }
 
index 43c4b6a..1d4d99e 100644 (file)
@@ -285,10 +285,11 @@ void drm_property_unreference_blob(struct drm_property_blob *blob);
  * This function looks up the property object specified by id and returns it.
  */
 static inline struct drm_property *drm_property_find(struct drm_device *dev,
+                                                    struct drm_file *file_priv,
                                                     uint32_t id)
 {
        struct drm_mode_object *mo;
-       mo = drm_mode_object_find(dev, id, DRM_MODE_OBJECT_PROPERTY);
+       mo = drm_mode_object_find(dev, file_priv, id, DRM_MODE_OBJECT_PROPERTY);
        return mo ? obj_to_property(mo) : NULL;
 }