[Intel-gfx] [PATCH] drm/i915: Use expcitly fixed type in compat32 structs

2015-07-14 Thread Daniel Vetter
I was confused shortly whether the compat was needed for the int,
until I noticed the pointer in the original.

Also remove typedef.

v2: Review from Chris.
- Add comments.
- Also change the int param in the original structure.

Cc: Chris Wilson ch...@chris-wilson.co.uk
Signed-off-by: Daniel Vetter daniel.vet...@intel.com
---
 drivers/gpu/drm/i915/i915_ioc32.c | 13 +
 include/uapi/drm/i915_drm.h   |  6 +-
 2 files changed, 14 insertions(+), 5 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_ioc32.c 
b/drivers/gpu/drm/i915/i915_ioc32.c
index 6eec2221b44e..a5a2d5b3f44b 100644
--- a/drivers/gpu/drm/i915/i915_ioc32.c
+++ b/drivers/gpu/drm/i915/i915_ioc32.c
@@ -35,15 +35,20 @@
 #include drm/i915_drm.h
 #include i915_drv.h
 
-typedef struct drm_i915_getparam32 {
-   int param;
+struct drm_i915_getparam32 {
+   s32 param;
+   /*
+* We screwed up the generic ioctl struct here and used a variable-sized
+* pointer. Use u32 in the compat struct to match the 32bit pointer
+* userspace expects.
+*/
u32 value;
-} drm_i915_getparam32_t;
+};
 
 static int compat_i915_getparam(struct file *file, unsigned int cmd,
unsigned long arg)
 {
-   drm_i915_getparam32_t req32;
+   struct drm_i915_getparam32 req32;
drm_i915_getparam_t __user *request;
 
if (copy_from_user(req32, (void __user *)arg, sizeof(req32)))
diff --git a/include/uapi/drm/i915_drm.h b/include/uapi/drm/i915_drm.h
index e7c29f1659ad..192027b4f031 100644
--- a/include/uapi/drm/i915_drm.h
+++ b/include/uapi/drm/i915_drm.h
@@ -358,7 +358,11 @@ typedef struct drm_i915_irq_wait {
 #define I915_PARAM_HAS_RESOURCE_STREAMER 36
 
 typedef struct drm_i915_getparam {
-   int param;
+   s32 param;
+   /*
+* WARNING: Using pointers instead of fixed-size u64 means we need to 
write
+* compat32 code. Don't repeat this mistake.
+*/
int __user *value;
 } drm_i915_getparam_t;
 
-- 
2.1.4

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH] drm/i915: Use expcitly fixed type in compat32 structs

2015-07-14 Thread Chris Wilson
On Tue, Jul 14, 2015 at 06:07:30PM +0200, Daniel Vetter wrote:
 I was confused shortly whether the compat was needed for the int,
 until I noticed the pointer in the original.
 
 Also remove typedef.
 
 v2: Review from Chris.
 - Add comments.
 - Also change the int param in the original structure.
 
 Cc: Chris Wilson ch...@chris-wilson.co.uk
 Signed-off-by: Daniel Vetter daniel.vet...@intel.com

I think there is much more value in documenting every mistake we make in
the uabi than there is the fixes themselves, so the comments are much
appreciated.

Reviewed-by: Chris Wilson ch...@chris-wilson.co.uk
-Chris

-- 
Chris Wilson, Intel Open Source Technology Centre
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx