summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/i915/i915_ioc32.c
diff options
context:
space:
mode:
authorDaniel Vetter <daniel.vetter@ffwll.ch>2015-07-14 18:07:30 +0200
committerDaniel Vetter <daniel.vetter@ffwll.ch>2015-07-15 11:39:59 +0200
commit346add7834557b5b9628b9bf2387106d42e631d4 (patch)
tree3d3f3ffe14062beef7065490ab1f23e992c3ddeb /drivers/gpu/drm/i915/i915_ioc32.c
parent1f7457b135b075e7a60c9133723363045084c333 (diff)
drm/i915: Use expcitly fixed type in compat32 structs
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 <chris@chris-wilson.co.uk> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com> Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'drivers/gpu/drm/i915/i915_ioc32.c')
-rw-r--r--drivers/gpu/drm/i915/i915_ioc32.c13
1 files changed, 9 insertions, 4 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)))