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