drm: Reject page_flip for !DRIVER_MODESET
authorDaniel Vetter <daniel.vetter@ffwll.ch>
Sat, 20 Aug 2016 10:22:11 +0000 (12:22 +0200)
committerSasha Levin <alexander.levin@verizon.com>
Thu, 1 Sep 2016 02:05:44 +0000 (22:05 -0400)
[ Upstream commit 6f00975c619064a18c23fd3aced325ae165a73b9 ]

Somehow this one slipped through, which means drivers without modeset
support can be oopsed (since those also don't call
drm_mode_config_init, which means the crtc lookup will chase an
uninitalized idr).

Reported-by: Alexander Potapenko <glider@google.com>
Cc: Alexander Potapenko <glider@google.com>
Cc: stable@vger.kernel.org
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
drivers/gpu/drm/drm_crtc.c

index 0cd6e0d7dd1ae3003ef0baf66c612792fbef7569..18dd03bb7af0310cfcf2ff500324e0e42b841308 100644 (file)
@@ -4583,6 +4583,9 @@ int drm_mode_page_flip_ioctl(struct drm_device *dev,
        unsigned long flags;
        int ret = -EINVAL;
 
+       if (!drm_core_check_feature(dev, DRIVER_MODESET))
+               return -EINVAL;
+
        if (page_flip->flags & ~DRM_MODE_PAGE_FLIP_FLAGS ||
            page_flip->reserved != 0)
                return -EINVAL;