Merge branch 'linux-linaro-lsk-v4.4-android' of git://git.linaro.org/kernel/linux...
[firefly-linux-kernel-4.4.55.git] / drivers / usb / gadget / function / f_mtp.c
index d8b69af6e335302824c5f0d52cb478d5b732c34a..e37ece7b6e3ea632d131174c4cd17af5dd4d81d1 100644 (file)
@@ -1009,6 +1009,25 @@ static long mtp_ioctl(struct file *fp, unsigned code, unsigned long value)
                        ret = mtp_send_event(dev, &event);
                goto out;
        }
+#ifdef CONFIG_COMPAT
+       case MTP_SEND_EVENT_32:
+       {
+               struct mtp_event_32     event_32;
+               struct mtp_event        event;
+               /* return here so we don't change dev->state below,
+                * which would interfere with bulk transfer state.
+                */
+               if (copy_from_user(&event_32, (void __user *)value,
+                                  sizeof(event_32)))
+                       ret = -EFAULT;
+               else {
+                       event.length = event_32.length;
+                       event.data = (void *)(unsigned long)event_32.data;
+                       ret = mtp_send_event(dev, &event);
+               }
+               goto out;
+       }
+#endif
        }
 
 fail:
@@ -1052,6 +1071,9 @@ static const struct file_operations mtp_fops = {
        .read = mtp_read,
        .write = mtp_write,
        .unlocked_ioctl = mtp_ioctl,
+#ifdef CONFIG_COMPAT
+       .compat_ioctl = mtp_ioctl,
+#endif
        .open = mtp_open,
        .release = mtp_release,
 };