summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2017-10-13 08:09:37 +0100
committerDave Airlie <airlied@redhat.com>2017-10-13 08:09:37 +0100
commitd6b37e9f0d206d3ef34667b2daca4ee59149e9df (patch)
tree78d0f68800ff64df08237abc2c52ab154dfb4ecf
parentac12eba07f1d6fad151aa792ddf8c8ad6fe2ac3b (diff)
kms_lease: test subleasing fails
-rw-r--r--tests/kms_lease.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/tests/kms_lease.c b/tests/kms_lease.c
index 7bd81fa3..55867a2b 100644
--- a/tests/kms_lease.c
+++ b/tests/kms_lease.c
@@ -542,6 +542,29 @@ static void lease_again(data_t *data)
terminate_lease(&lease_b);
}
+/* Test subleasing fails */
+static void lease_sublease_illegal(data_t *data)
+{
+ lease_t lease;
+ uint32_t object_ids[3];
+ struct local_drm_mode_create_lease mcl;
+
+ /* Create a valid lease */
+ igt_assert_eq(make_lease(data, &lease), 0);
+
+ mcl.object_ids = (uint64_t) (uintptr_t) &object_ids[0];
+ mcl.object_count = 0;
+ mcl.flags = O_CLOEXEC;
+
+ object_ids[mcl.object_count++] = data->connector_id;
+ object_ids[mcl.object_count++] = data->crtc_id;
+ object_ids[mcl.object_count++] = data->primary_plane_id;
+
+ igt_assert_eq(create_lease(lease.fd, &mcl), -EINVAL);
+
+ terminate_lease(&lease);
+}
+
/* Test leasing an invalid connector */
static void lease_invalid_connector(data_t *data)
{
@@ -662,6 +685,7 @@ igt_main
{ "lease_revoke", lease_revoke },
{ "lease_revoke_illegal", lease_revoke_illegal },
{ "lease_again", lease_again },
+ { "lease_sublease_illegal", lease_sublease_illegal },
{ "lease_invalid_connector", lease_invalid_connector },
{ "lease_invalid_crtc", lease_invalid_crtc },
{ "lease_create_zero_objects", lease_create_zero_objects },