diff options
Diffstat (limited to 'drivers/usb/class/cdc-wdm.c')
-rw-r--r-- | drivers/usb/class/cdc-wdm.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/drivers/usb/class/cdc-wdm.c b/drivers/usb/class/cdc-wdm.c index 122d056d96d5..8a230f0ef77c 100644 --- a/drivers/usb/class/cdc-wdm.c +++ b/drivers/usb/class/cdc-wdm.c | |||
@@ -13,6 +13,7 @@ | |||
13 | */ | 13 | */ |
14 | #include <linux/kernel.h> | 14 | #include <linux/kernel.h> |
15 | #include <linux/errno.h> | 15 | #include <linux/errno.h> |
16 | #include <linux/ioctl.h> | ||
16 | #include <linux/slab.h> | 17 | #include <linux/slab.h> |
17 | #include <linux/module.h> | 18 | #include <linux/module.h> |
18 | #include <linux/mutex.h> | 19 | #include <linux/mutex.h> |
@@ -644,6 +645,22 @@ static int wdm_release(struct inode *inode, struct file *file) | |||
644 | return 0; | 645 | return 0; |
645 | } | 646 | } |
646 | 647 | ||
648 | static long wdm_ioctl(struct file *file, unsigned int cmd, unsigned long arg) | ||
649 | { | ||
650 | struct wdm_device *desc = file->private_data; | ||
651 | int rv = 0; | ||
652 | |||
653 | switch (cmd) { | ||
654 | case IOCTL_WDM_MAX_COMMAND: | ||
655 | if (copy_to_user((void __user *)arg, &desc->wMaxCommand, sizeof(desc->wMaxCommand))) | ||
656 | rv = -EFAULT; | ||
657 | break; | ||
658 | default: | ||
659 | rv = -ENOTTY; | ||
660 | } | ||
661 | return rv; | ||
662 | } | ||
663 | |||
647 | static const struct file_operations wdm_fops = { | 664 | static const struct file_operations wdm_fops = { |
648 | .owner = THIS_MODULE, | 665 | .owner = THIS_MODULE, |
649 | .read = wdm_read, | 666 | .read = wdm_read, |
@@ -652,6 +669,8 @@ static const struct file_operations wdm_fops = { | |||
652 | .flush = wdm_flush, | 669 | .flush = wdm_flush, |
653 | .release = wdm_release, | 670 | .release = wdm_release, |
654 | .poll = wdm_poll, | 671 | .poll = wdm_poll, |
672 | .unlocked_ioctl = wdm_ioctl, | ||
673 | .compat_ioctl = wdm_ioctl, | ||
655 | .llseek = noop_llseek, | 674 | .llseek = noop_llseek, |
656 | }; | 675 | }; |
657 | 676 | ||