From ec26d970825ad54a69478c65b854879e6aaafc37 Mon Sep 17 00:00:00 2001 From: Daniel Vetter Date: Fri, 22 Apr 2016 20:47:05 +0200 Subject: tests/kms_addfb_basic: Add invalid tests to set fb props There's no properties on fb modeset objects, bug bugs in the kernel when trying to use those ioctls in such an invalid way. Cc: Dave Airlie Signed-off-by: Daniel Vetter --- tests/kms_addfb_basic.c | 66 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) (limited to 'tests/kms_addfb_basic.c') diff --git a/tests/kms_addfb_basic.c b/tests/kms_addfb_basic.c index cdfcd179..29fbe817 100644 --- a/tests/kms_addfb_basic.c +++ b/tests/kms_addfb_basic.c @@ -475,6 +475,70 @@ static void addfb25_ytile(int fd) } } +static void prop_tests(int fd) +{ + struct drm_mode_fb_cmd2 f = {}; + struct drm_mode_obj_get_properties get_props = {}; + struct drm_mode_obj_set_property set_prop = {}; + uint64_t prop, prop_val; + + f.width = 1024; + f.height = 1024; + f.pixel_format = DRM_FORMAT_XRGB8888; + f.pitches[0] = 1024*4; + + igt_fixture { + gem_bo = igt_create_bo_with_dimensions(fd, 1024, 1024, + DRM_FORMAT_XRGB8888, 0, 0, NULL, NULL, NULL); + igt_assert(gem_bo); + + f.handles[0] = gem_bo; + + igt_assert(drmIoctl(fd, DRM_IOCTL_MODE_ADDFB2, &f) == 0); + } + + get_props.props_ptr = (uintptr_t) ∝ + get_props.prop_values_ptr = (uintptr_t) &prop_val; + get_props.count_props = 1; + get_props.obj_id = f.fb_id; + + igt_subtest("invalid-get-prop-any") { + get_props.obj_type = 0; /* DRM_MODE_OBJECT_ANY */ + + igt_assert(drmIoctl(fd, DRM_IOCTL_MODE_OBJ_GETPROPERTIES, + &get_props) == -1 && errno == EINVAL); + } + + igt_subtest("invalid-get-prop") { + get_props.obj_type = DRM_MODE_OBJECT_FB; + + igt_assert(drmIoctl(fd, DRM_IOCTL_MODE_OBJ_GETPROPERTIES, + &get_props) == -1 && errno == EINVAL); + } + + set_prop.value = 0; + set_prop.prop_id = 1; + set_prop.obj_id = f.fb_id; + + igt_subtest("invalid-set-prop-any") { + set_prop.obj_type = 0; /* DRM_MODE_OBJECT_ANY */ + + igt_assert(drmIoctl(fd, DRM_IOCTL_MODE_OBJ_SETPROPERTY, + &set_prop) == -1 && errno == EINVAL); + } + + igt_subtest("invalid-set-prop") { + set_prop.obj_type = DRM_MODE_OBJECT_FB; + + igt_assert(drmIoctl(fd, DRM_IOCTL_MODE_OBJ_SETPROPERTY, + &set_prop) == -1 && errno == EINVAL); + } + + igt_fixture + igt_assert(drmIoctl(fd, DRM_IOCTL_MODE_RMFB, &f.fb_id) == 0); + +} + int fd; igt_main @@ -494,6 +558,8 @@ igt_main tiling_tests(fd); + prop_tests(fd); + igt_fixture close(fd); } -- cgit v1.2.3