All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH igt] lib: Assert that the internal gem_create interface matches the ioctl
@ 2017-10-03 14:05 Chris Wilson
  2017-10-03 14:19 ` Mika Kuoppala
                   ` (3 more replies)
  0 siblings, 4 replies; 6+ messages in thread
From: Chris Wilson @ 2017-10-03 14:05 UTC (permalink / raw)
  To: intel-gfx

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
---
 lib/igt_core.h       | 14 ++++++++++++++
 lib/ioctl_wrappers.c |  4 ++++
 2 files changed, 18 insertions(+)

diff --git a/lib/igt_core.h b/lib/igt_core.h
index f8543d65..f5f65984 100644
--- a/lib/igt_core.h
+++ b/lib/igt_core.h
@@ -932,4 +932,18 @@ int igt_system_quiet(const char *command);
 		free(buf); \
 	} while (0)
 
+/**
+ * igt_typecheck:
+ * @type: The intended type we expect the variable to be
+ * @x: The variable we wish to check
+ *
+ * Performs a *compile-time* check that a variable is of a particular type.
+ */
+#define igt_typecheck(type, x) ({ \
+	type __dummy; \
+        typeof(x) __dummy2; \
+        (void)(&__dummy == &__dummy2); \
+        1; \
+})
+
 #endif /* IGT_CORE_H */
diff --git a/lib/ioctl_wrappers.c b/lib/ioctl_wrappers.c
index 87511fc6..0b523fac 100644
--- a/lib/ioctl_wrappers.c
+++ b/lib/ioctl_wrappers.c
@@ -558,6 +558,10 @@ int __gem_create(int fd, uint64_t size, uint32_t *handle)
 	};
 	int err = 0;
 
+	/* Ensure that our internal interface matches the kernel's */
+	igt_typecheck(typeof(create.size), size);
+	igt_typecheck(typeof(create.handle), *handle);
+
 	if (igt_ioctl(fd, DRM_IOCTL_I915_GEM_CREATE, &create) == 0)
 		*handle = create.handle;
 	else
-- 
2.14.2

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2017-10-03 22:27 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-10-03 14:05 [PATCH igt] lib: Assert that the internal gem_create interface matches the ioctl Chris Wilson
2017-10-03 14:19 ` Mika Kuoppala
2017-10-03 14:29   ` Chris Wilson
2017-10-03 14:25 ` Chris Wilson
2017-10-03 20:33 ` ✓ Fi.CI.BAT: success for " Patchwork
2017-10-03 22:27 ` ✓ Fi.CI.IGT: " Patchwork

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.