On Wed, May 28, 2014 at 07:57:21PM -0400, Rob Clark wrote:
From: Ville Syrjälä ville.syrjala@linux.intel.com
To avoid having to pass object types from userspace for atomic mode setting ioctl, allow drm_mode_object_find() to look up an object of any type. This will only work as long as the all object types share the ID space.
Signed-off-by: Ville Syrjälä ville.syrjala@linux.intel.com Signed-off-by: Rob Clark robdclark@gmail.com
Still NACK. Iirc you only want a boolean "does this exist" so please add a new function for this. Returning a full pointer for framebuffer is simply unsafe, allowing that a call for trouble. Yes, I know your current code is safe but I don't want to freak out and do an ad-hoc audit every time I stumble over this again. -Daniel
drivers/gpu/drm/drm_crtc.c | 3 ++- include/drm/drm_crtc.h | 1 + 2 files changed, 3 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c index c53ddc3..b975575 100644 --- a/drivers/gpu/drm/drm_crtc.c +++ b/drivers/gpu/drm/drm_crtc.c @@ -409,7 +409,8 @@ struct drm_mode_object *drm_mode_object_find(struct drm_device *dev,
mutex_lock(&dev->mode_config.idr_mutex); obj = idr_find(&dev->mode_config.crtc_idr, id);
- if (!obj || (obj->type != type) || (obj->id != id))
- if (!obj || (type != DRM_MODE_OBJECT_ANY && obj->type != type) ||
obj = NULL; mutex_unlock(&dev->mode_config.idr_mutex);(obj->id != id))
diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h index dbd7954..44d7964 100644 --- a/include/drm/drm_crtc.h +++ b/include/drm/drm_crtc.h @@ -50,6 +50,7 @@ struct drm_clip_rect; #define DRM_MODE_OBJECT_BLOB 0xbbbbbbbb #define DRM_MODE_OBJECT_PLANE 0xeeeeeeee #define DRM_MODE_OBJECT_BRIDGE 0xbdbdbdbd +#define DRM_MODE_OBJECT_ANY 0
struct drm_mode_object { uint32_t id; -- 1.9.3