|
|
@@ -1051,13 +1051,31 @@ static long uinput_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
|
|
|
|
|
|
#ifdef CONFIG_COMPAT
|
|
|
|
|
|
-#define UI_SET_PHYS_COMPAT _IOW(UINPUT_IOCTL_BASE, 108, compat_uptr_t)
|
|
|
+/*
|
|
|
+ * These IOCTLs change their size and thus their numbers between
|
|
|
+ * 32 and 64 bits.
|
|
|
+ */
|
|
|
+#define UI_SET_PHYS_COMPAT \
|
|
|
+ _IOW(UINPUT_IOCTL_BASE, 108, compat_uptr_t)
|
|
|
+#define UI_BEGIN_FF_UPLOAD_COMPAT \
|
|
|
+ _IOWR(UINPUT_IOCTL_BASE, 200, struct uinput_ff_upload_compat)
|
|
|
+#define UI_END_FF_UPLOAD_COMPAT \
|
|
|
+ _IOW(UINPUT_IOCTL_BASE, 201, struct uinput_ff_upload_compat)
|
|
|
|
|
|
static long uinput_compat_ioctl(struct file *file,
|
|
|
unsigned int cmd, unsigned long arg)
|
|
|
{
|
|
|
- if (cmd == UI_SET_PHYS_COMPAT)
|
|
|
+ switch (cmd) {
|
|
|
+ case UI_SET_PHYS_COMPAT:
|
|
|
cmd = UI_SET_PHYS;
|
|
|
+ break;
|
|
|
+ case UI_BEGIN_FF_UPLOAD_COMPAT:
|
|
|
+ cmd = UI_BEGIN_FF_UPLOAD;
|
|
|
+ break;
|
|
|
+ case UI_END_FF_UPLOAD_COMPAT:
|
|
|
+ cmd = UI_END_FF_UPLOAD;
|
|
|
+ break;
|
|
|
+ }
|
|
|
|
|
|
return uinput_ioctl_handler(file, cmd, arg, compat_ptr(arg));
|
|
|
}
|