drm: check for modesetting on modeset ioctls

Noticed this while working on some other things, helps if we check for modeset
enabled on modesetting ioctls.

Cc: stable@kernel.org
Signed-off-by: Dave Airlie <airlied@redhat.com>

+51
+51
drivers/gpu/drm/drm_crtc.c
··· 1073 uint32_t __user *encoder_id; 1074 struct drm_mode_group *mode_group; 1075 1076 mutex_lock(&dev->mode_config.mutex); 1077 1078 /* ··· 1247 struct drm_mode_object *obj; 1248 int ret = 0; 1249 1250 mutex_lock(&dev->mode_config.mutex); 1251 1252 obj = drm_mode_object_find(dev, crtc_resp->crtc_id, ··· 1317 uint32_t __user *prop_ptr; 1318 uint64_t __user *prop_values; 1319 uint32_t __user *encoder_ptr; 1320 1321 memset(&u_mode, 0, sizeof(struct drm_mode_modeinfo)); 1322 ··· 1440 struct drm_encoder *encoder; 1441 int ret = 0; 1442 1443 mutex_lock(&dev->mode_config.mutex); 1444 obj = drm_mode_object_find(dev, enc_resp->encoder_id, 1445 DRM_MODE_OBJECT_ENCODER); ··· 1497 uint32_t __user *set_connectors_ptr; 1498 int ret = 0; 1499 int i; 1500 1501 mutex_lock(&dev->mode_config.mutex); 1502 obj = drm_mode_object_find(dev, crtc_req->crtc_id, ··· 1618 struct drm_crtc *crtc; 1619 int ret = 0; 1620 1621 if (!req->flags) { 1622 DRM_ERROR("no operation set\n"); 1623 return -EINVAL; ··· 1685 struct drm_framebuffer *fb; 1686 int ret = 0; 1687 1688 if ((config->min_width > r->width) || (r->width > config->max_width)) { 1689 DRM_ERROR("mode new framebuffer width not within limits\n"); 1690 return -EINVAL; ··· 1745 int ret = 0; 1746 int found = 0; 1747 1748 mutex_lock(&dev->mode_config.mutex); 1749 obj = drm_mode_object_find(dev, *id, DRM_MODE_OBJECT_FB); 1750 /* TODO check that we realy get a framebuffer back. */ ··· 1804 struct drm_framebuffer *fb; 1805 int ret = 0; 1806 1807 mutex_lock(&dev->mode_config.mutex); 1808 obj = drm_mode_object_find(dev, r->fb_id, DRM_MODE_OBJECT_FB); 1809 if (!obj) { ··· 1839 unsigned flags; 1840 int num_clips; 1841 int ret = 0; 1842 1843 mutex_lock(&dev->mode_config.mutex); 1844 obj = drm_mode_object_find(dev, r->fb_id, DRM_MODE_OBJECT_FB); ··· 2026 struct drm_mode_modeinfo *umode = &mode_cmd->mode; 2027 int ret = 0; 2028 2029 mutex_lock(&dev->mode_config.mutex); 2030 2031 obj = drm_mode_object_find(dev, mode_cmd->connector_id, DRM_MODE_OBJECT_CONNECTOR); ··· 2074 struct drm_display_mode mode; 2075 struct drm_mode_modeinfo *umode = &mode_cmd->mode; 2076 int ret = 0; 2077 2078 mutex_lock(&dev->mode_config.mutex); 2079 ··· 2247 uint64_t __user *values_ptr; 2248 uint32_t __user *blob_length_ptr; 2249 2250 mutex_lock(&dev->mode_config.mutex); 2251 obj = drm_mode_object_find(dev, out_resp->prop_id, DRM_MODE_OBJECT_PROPERTY); 2252 if (!obj) { ··· 2372 int ret = 0; 2373 void *blob_ptr; 2374 2375 mutex_lock(&dev->mode_config.mutex); 2376 obj = drm_mode_object_find(dev, out_resp->blob_id, DRM_MODE_OBJECT_BLOB); 2377 if (!obj) { ··· 2434 struct drm_connector *connector; 2435 int ret = -EINVAL; 2436 int i; 2437 2438 mutex_lock(&dev->mode_config.mutex); 2439 ··· 2554 int size; 2555 int ret = 0; 2556 2557 mutex_lock(&dev->mode_config.mutex); 2558 obj = drm_mode_object_find(dev, crtc_lut->crtc_id, DRM_MODE_OBJECT_CRTC); 2559 if (!obj) { ··· 2607 void *r_base, *g_base, *b_base; 2608 int size; 2609 int ret = 0; 2610 2611 mutex_lock(&dev->mode_config.mutex); 2612 obj = drm_mode_object_find(dev, crtc_lut->crtc_id, DRM_MODE_OBJECT_CRTC);
··· 1073 uint32_t __user *encoder_id; 1074 struct drm_mode_group *mode_group; 1075 1076 + if (!drm_core_check_feature(dev, DRIVER_MODESET)) 1077 + return -EINVAL; 1078 + 1079 mutex_lock(&dev->mode_config.mutex); 1080 1081 /* ··· 1244 struct drm_mode_object *obj; 1245 int ret = 0; 1246 1247 + if (!drm_core_check_feature(dev, DRIVER_MODESET)) 1248 + return -EINVAL; 1249 + 1250 mutex_lock(&dev->mode_config.mutex); 1251 1252 obj = drm_mode_object_find(dev, crtc_resp->crtc_id, ··· 1311 uint32_t __user *prop_ptr; 1312 uint64_t __user *prop_values; 1313 uint32_t __user *encoder_ptr; 1314 + 1315 + if (!drm_core_check_feature(dev, DRIVER_MODESET)) 1316 + return -EINVAL; 1317 1318 memset(&u_mode, 0, sizeof(struct drm_mode_modeinfo)); 1319 ··· 1431 struct drm_encoder *encoder; 1432 int ret = 0; 1433 1434 + if (!drm_core_check_feature(dev, DRIVER_MODESET)) 1435 + return -EINVAL; 1436 + 1437 mutex_lock(&dev->mode_config.mutex); 1438 obj = drm_mode_object_find(dev, enc_resp->encoder_id, 1439 DRM_MODE_OBJECT_ENCODER); ··· 1485 uint32_t __user *set_connectors_ptr; 1486 int ret = 0; 1487 int i; 1488 + 1489 + if (!drm_core_check_feature(dev, DRIVER_MODESET)) 1490 + return -EINVAL; 1491 1492 mutex_lock(&dev->mode_config.mutex); 1493 obj = drm_mode_object_find(dev, crtc_req->crtc_id, ··· 1603 struct drm_crtc *crtc; 1604 int ret = 0; 1605 1606 + if (!drm_core_check_feature(dev, DRIVER_MODESET)) 1607 + return -EINVAL; 1608 + 1609 if (!req->flags) { 1610 DRM_ERROR("no operation set\n"); 1611 return -EINVAL; ··· 1667 struct drm_framebuffer *fb; 1668 int ret = 0; 1669 1670 + if (!drm_core_check_feature(dev, DRIVER_MODESET)) 1671 + return -EINVAL; 1672 + 1673 if ((config->min_width > r->width) || (r->width > config->max_width)) { 1674 DRM_ERROR("mode new framebuffer width not within limits\n"); 1675 return -EINVAL; ··· 1724 int ret = 0; 1725 int found = 0; 1726 1727 + if (!drm_core_check_feature(dev, DRIVER_MODESET)) 1728 + return -EINVAL; 1729 + 1730 mutex_lock(&dev->mode_config.mutex); 1731 obj = drm_mode_object_find(dev, *id, DRM_MODE_OBJECT_FB); 1732 /* TODO check that we realy get a framebuffer back. */ ··· 1780 struct drm_framebuffer *fb; 1781 int ret = 0; 1782 1783 + if (!drm_core_check_feature(dev, DRIVER_MODESET)) 1784 + return -EINVAL; 1785 + 1786 mutex_lock(&dev->mode_config.mutex); 1787 obj = drm_mode_object_find(dev, r->fb_id, DRM_MODE_OBJECT_FB); 1788 if (!obj) { ··· 1812 unsigned flags; 1813 int num_clips; 1814 int ret = 0; 1815 + 1816 + if (!drm_core_check_feature(dev, DRIVER_MODESET)) 1817 + return -EINVAL; 1818 1819 mutex_lock(&dev->mode_config.mutex); 1820 obj = drm_mode_object_find(dev, r->fb_id, DRM_MODE_OBJECT_FB); ··· 1996 struct drm_mode_modeinfo *umode = &mode_cmd->mode; 1997 int ret = 0; 1998 1999 + if (!drm_core_check_feature(dev, DRIVER_MODESET)) 2000 + return -EINVAL; 2001 + 2002 mutex_lock(&dev->mode_config.mutex); 2003 2004 obj = drm_mode_object_find(dev, mode_cmd->connector_id, DRM_MODE_OBJECT_CONNECTOR); ··· 2041 struct drm_display_mode mode; 2042 struct drm_mode_modeinfo *umode = &mode_cmd->mode; 2043 int ret = 0; 2044 + 2045 + if (!drm_core_check_feature(dev, DRIVER_MODESET)) 2046 + return -EINVAL; 2047 2048 mutex_lock(&dev->mode_config.mutex); 2049 ··· 2211 uint64_t __user *values_ptr; 2212 uint32_t __user *blob_length_ptr; 2213 2214 + if (!drm_core_check_feature(dev, DRIVER_MODESET)) 2215 + return -EINVAL; 2216 + 2217 mutex_lock(&dev->mode_config.mutex); 2218 obj = drm_mode_object_find(dev, out_resp->prop_id, DRM_MODE_OBJECT_PROPERTY); 2219 if (!obj) { ··· 2333 int ret = 0; 2334 void *blob_ptr; 2335 2336 + if (!drm_core_check_feature(dev, DRIVER_MODESET)) 2337 + return -EINVAL; 2338 + 2339 mutex_lock(&dev->mode_config.mutex); 2340 obj = drm_mode_object_find(dev, out_resp->blob_id, DRM_MODE_OBJECT_BLOB); 2341 if (!obj) { ··· 2392 struct drm_connector *connector; 2393 int ret = -EINVAL; 2394 int i; 2395 + 2396 + if (!drm_core_check_feature(dev, DRIVER_MODESET)) 2397 + return -EINVAL; 2398 2399 mutex_lock(&dev->mode_config.mutex); 2400 ··· 2509 int size; 2510 int ret = 0; 2511 2512 + if (!drm_core_check_feature(dev, DRIVER_MODESET)) 2513 + return -EINVAL; 2514 + 2515 mutex_lock(&dev->mode_config.mutex); 2516 obj = drm_mode_object_find(dev, crtc_lut->crtc_id, DRM_MODE_OBJECT_CRTC); 2517 if (!obj) { ··· 2559 void *r_base, *g_base, *b_base; 2560 int size; 2561 int ret = 0; 2562 + 2563 + if (!drm_core_check_feature(dev, DRIVER_MODESET)) 2564 + return -EINVAL; 2565 2566 mutex_lock(&dev->mode_config.mutex); 2567 obj = drm_mode_object_find(dev, crtc_lut->crtc_id, DRM_MODE_OBJECT_CRTC);