[PATCH 3/3] selftests: sync: add test that closes the fd before fence signal

Gustavo Padovan gustavo at padovan.org
Sat Jul 29 15:22:17 UTC 2017


From: Gustavo Padovan <gustavo.padovan at collabora.com>

We found this bug in the sw_sync so adding a test case to prevent it to
happen in the future.

Cc: Shuah Khan <shuahkh at osg.samsung.com>
Cc: linux-kselftest at vger.kernel.org
Signed-off-by: Gustavo Padovan <gustavo.padovan at collabora.com>

---
To be applied after the TAP13 convertion patches.
---
 tools/testing/selftests/sync/sync_fence.c | 23 +++++++++++++++++++++++
 tools/testing/selftests/sync/sync_test.c  |  1 +
 tools/testing/selftests/sync/synctest.h   |  1 +
 3 files changed, 25 insertions(+)

diff --git a/tools/testing/selftests/sync/sync_fence.c b/tools/testing/selftests/sync/sync_fence.c
index 13f1752..70cfa61 100644
--- a/tools/testing/selftests/sync/sync_fence.c
+++ b/tools/testing/selftests/sync/sync_fence.c
@@ -29,6 +29,29 @@
 #include "sw_sync.h"
 #include "synctest.h"
 
+int test_close_fence_fd_before_inc(void)
+{
+	int fence, valid, ret;
+	int timeline = sw_sync_timeline_create();
+
+	valid = sw_sync_timeline_is_valid(timeline);
+	ASSERT(valid, "Failure allocating timeline\n");
+
+	fence = sw_sync_fence_create(timeline, "allocFence", 1);
+	valid = sw_sync_fence_is_valid(fence);
+	ASSERT(valid, "Failure allocating fence\n");
+
+	sw_sync_fence_destroy(fence);
+
+	/* Advance timeline from 0 -> 1 */
+	ret = sw_sync_timeline_inc(timeline, 1);
+	ASSERT(ret == 0, "Failure advancing timeline\n");
+
+	sw_sync_timeline_destroy(timeline);
+
+	return 0;
+}
+
 int test_fence_one_timeline_wait(void)
 {
 	int fence, valid, ret;
diff --git a/tools/testing/selftests/sync/sync_test.c b/tools/testing/selftests/sync/sync_test.c
index 7f79382..2f73ace 100644
--- a/tools/testing/selftests/sync/sync_test.c
+++ b/tools/testing/selftests/sync/sync_test.c
@@ -95,6 +95,7 @@ int main(void)
 	RUN_TEST(test_alloc_fence);
 	RUN_TEST(test_alloc_fence_negative);
 
+	RUN_TEST(test_close_fence_fd_before_inc);
 	RUN_TEST(test_fence_one_timeline_wait);
 	RUN_TEST(test_fence_one_timeline_merge);
 	RUN_TEST(test_fence_merge_same_fence);
diff --git a/tools/testing/selftests/sync/synctest.h b/tools/testing/selftests/sync/synctest.h
index 90a8e53..86a9532 100644
--- a/tools/testing/selftests/sync/synctest.h
+++ b/tools/testing/selftests/sync/synctest.h
@@ -46,6 +46,7 @@ int test_alloc_fence(void);
 int test_alloc_fence_negative(void);
 
 /* Fence tests with one timeline */
+int test_close_fence_fd_before_inc(void);
 int test_fence_one_timeline_wait(void);
 int test_fence_one_timeline_merge(void);
 
-- 
2.9.4



More information about the dri-devel mailing list