提交 1cff8f6b 编写于 作者: D Daniel Vetter

drm/i915: properly check for MODESET for kms driver ioctls

Also ditch the cargo-culted dev_priv checks - either we have a
giant hole in our setup code or this is useless. Plainly bogus
to check for it in either case.

v2: Chris Wilson noticed that I've missed one bogus dev_priv check.

v3: The check in the overlay code is redundant (Chris)
Reviewed-by: NChris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
上级 13a86b85
...@@ -6189,15 +6189,12 @@ static void intel_crtc_init(struct drm_device *dev, int pipe) ...@@ -6189,15 +6189,12 @@ static void intel_crtc_init(struct drm_device *dev, int pipe)
int intel_get_pipe_from_crtc_id(struct drm_device *dev, void *data, int intel_get_pipe_from_crtc_id(struct drm_device *dev, void *data,
struct drm_file *file) struct drm_file *file)
{ {
drm_i915_private_t *dev_priv = dev->dev_private;
struct drm_i915_get_pipe_from_crtc_id *pipe_from_crtc_id = data; struct drm_i915_get_pipe_from_crtc_id *pipe_from_crtc_id = data;
struct drm_mode_object *drmmode_obj; struct drm_mode_object *drmmode_obj;
struct intel_crtc *crtc; struct intel_crtc *crtc;
if (!dev_priv) { if (!drm_core_check_feature(dev, DRIVER_MODESET))
DRM_ERROR("called with no initialization\n"); return -ENODEV;
return -EINVAL;
}
drmmode_obj = drm_mode_object_find(dev, pipe_from_crtc_id->crtc_id, drmmode_obj = drm_mode_object_find(dev, pipe_from_crtc_id->crtc_id,
DRM_MODE_OBJECT_CRTC); DRM_MODE_OBJECT_CRTC);
......
...@@ -1122,11 +1122,7 @@ int intel_overlay_put_image(struct drm_device *dev, void *data, ...@@ -1122,11 +1122,7 @@ int intel_overlay_put_image(struct drm_device *dev, void *data,
struct put_image_params *params; struct put_image_params *params;
int ret; int ret;
if (!dev_priv) { /* No need to check for DRIVER_MODESET - we don't set it up then. */
DRM_ERROR("called with no initialization\n");
return -EINVAL;
}
overlay = dev_priv->overlay; overlay = dev_priv->overlay;
if (!overlay) { if (!overlay) {
DRM_DEBUG("userspace bug: no overlay\n"); DRM_DEBUG("userspace bug: no overlay\n");
...@@ -1323,11 +1319,7 @@ int intel_overlay_attrs(struct drm_device *dev, void *data, ...@@ -1323,11 +1319,7 @@ int intel_overlay_attrs(struct drm_device *dev, void *data,
struct overlay_registers __iomem *regs; struct overlay_registers __iomem *regs;
int ret; int ret;
if (!dev_priv) { /* No need to check for DRIVER_MODESET - we don't set it up then. */
DRM_ERROR("called with no initialization\n");
return -EINVAL;
}
overlay = dev_priv->overlay; overlay = dev_priv->overlay;
if (!overlay) { if (!overlay) {
DRM_DEBUG("userspace bug: no overlay\n"); DRM_DEBUG("userspace bug: no overlay\n");
......
...@@ -558,14 +558,13 @@ int intel_sprite_set_colorkey(struct drm_device *dev, void *data, ...@@ -558,14 +558,13 @@ int intel_sprite_set_colorkey(struct drm_device *dev, void *data,
struct drm_file *file_priv) struct drm_file *file_priv)
{ {
struct drm_intel_sprite_colorkey *set = data; struct drm_intel_sprite_colorkey *set = data;
struct drm_i915_private *dev_priv = dev->dev_private;
struct drm_mode_object *obj; struct drm_mode_object *obj;
struct drm_plane *plane; struct drm_plane *plane;
struct intel_plane *intel_plane; struct intel_plane *intel_plane;
int ret = 0; int ret = 0;
if (!dev_priv) if (!drm_core_check_feature(dev, DRIVER_MODESET))
return -EINVAL; return -ENODEV;
/* Make sure we don't try to enable both src & dest simultaneously */ /* Make sure we don't try to enable both src & dest simultaneously */
if ((set->flags & (I915_SET_COLORKEY_DESTINATION | I915_SET_COLORKEY_SOURCE)) == (I915_SET_COLORKEY_DESTINATION | I915_SET_COLORKEY_SOURCE)) if ((set->flags & (I915_SET_COLORKEY_DESTINATION | I915_SET_COLORKEY_SOURCE)) == (I915_SET_COLORKEY_DESTINATION | I915_SET_COLORKEY_SOURCE))
...@@ -592,14 +591,13 @@ int intel_sprite_get_colorkey(struct drm_device *dev, void *data, ...@@ -592,14 +591,13 @@ int intel_sprite_get_colorkey(struct drm_device *dev, void *data,
struct drm_file *file_priv) struct drm_file *file_priv)
{ {
struct drm_intel_sprite_colorkey *get = data; struct drm_intel_sprite_colorkey *get = data;
struct drm_i915_private *dev_priv = dev->dev_private;
struct drm_mode_object *obj; struct drm_mode_object *obj;
struct drm_plane *plane; struct drm_plane *plane;
struct intel_plane *intel_plane; struct intel_plane *intel_plane;
int ret = 0; int ret = 0;
if (!dev_priv) if (!drm_core_check_feature(dev, DRIVER_MODESET))
return -EINVAL; return -ENODEV;
mutex_lock(&dev->mode_config.mutex); mutex_lock(&dev->mode_config.mutex);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册