diff options
Diffstat (limited to 'drivers/usb/gadget/inode.c')
-rw-r--r-- | drivers/usb/gadget/inode.c | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/drivers/usb/gadget/inode.c b/drivers/usb/gadget/inode.c index fc35406fc80c..a56876aaf76c 100644 --- a/drivers/usb/gadget/inode.c +++ b/drivers/usb/gadget/inode.c | |||
@@ -33,7 +33,6 @@ | |||
33 | #include <linux/sched.h> | 33 | #include <linux/sched.h> |
34 | #include <linux/slab.h> | 34 | #include <linux/slab.h> |
35 | #include <linux/poll.h> | 35 | #include <linux/poll.h> |
36 | #include <linux/smp_lock.h> | ||
37 | 36 | ||
38 | #include <linux/device.h> | 37 | #include <linux/device.h> |
39 | #include <linux/moduleparam.h> | 38 | #include <linux/moduleparam.h> |
@@ -387,8 +386,10 @@ ep_read (struct file *fd, char __user *buf, size_t len, loff_t *ptr) | |||
387 | 386 | ||
388 | /* halt any endpoint by doing a "wrong direction" i/o call */ | 387 | /* halt any endpoint by doing a "wrong direction" i/o call */ |
389 | if (usb_endpoint_dir_in(&data->desc)) { | 388 | if (usb_endpoint_dir_in(&data->desc)) { |
390 | if (usb_endpoint_xfer_isoc(&data->desc)) | 389 | if (usb_endpoint_xfer_isoc(&data->desc)) { |
390 | mutex_unlock(&data->lock); | ||
391 | return -EINVAL; | 391 | return -EINVAL; |
392 | } | ||
392 | DBG (data->dev, "%s halt\n", data->name); | 393 | DBG (data->dev, "%s halt\n", data->name); |
393 | spin_lock_irq (&data->dev->lock); | 394 | spin_lock_irq (&data->dev->lock); |
394 | if (likely (data->ep != NULL)) | 395 | if (likely (data->ep != NULL)) |
@@ -430,8 +431,10 @@ ep_write (struct file *fd, const char __user *buf, size_t len, loff_t *ptr) | |||
430 | 431 | ||
431 | /* halt any endpoint by doing a "wrong direction" i/o call */ | 432 | /* halt any endpoint by doing a "wrong direction" i/o call */ |
432 | if (!usb_endpoint_dir_in(&data->desc)) { | 433 | if (!usb_endpoint_dir_in(&data->desc)) { |
433 | if (usb_endpoint_xfer_isoc(&data->desc)) | 434 | if (usb_endpoint_xfer_isoc(&data->desc)) { |
435 | mutex_unlock(&data->lock); | ||
434 | return -EINVAL; | 436 | return -EINVAL; |
437 | } | ||
435 | DBG (data->dev, "%s halt\n", data->name); | 438 | DBG (data->dev, "%s halt\n", data->name); |
436 | spin_lock_irq (&data->dev->lock); | 439 | spin_lock_irq (&data->dev->lock); |
437 | if (likely (data->ep != NULL)) | 440 | if (likely (data->ep != NULL)) |
@@ -1775,7 +1778,6 @@ static struct usb_gadget_driver gadgetfs_driver = { | |||
1775 | .speed = USB_SPEED_FULL, | 1778 | .speed = USB_SPEED_FULL, |
1776 | #endif | 1779 | #endif |
1777 | .function = (char *) driver_desc, | 1780 | .function = (char *) driver_desc, |
1778 | .bind = gadgetfs_bind, | ||
1779 | .unbind = gadgetfs_unbind, | 1781 | .unbind = gadgetfs_unbind, |
1780 | .setup = gadgetfs_setup, | 1782 | .setup = gadgetfs_setup, |
1781 | .disconnect = gadgetfs_disconnect, | 1783 | .disconnect = gadgetfs_disconnect, |
@@ -1798,7 +1800,6 @@ static int gadgetfs_probe (struct usb_gadget *gadget) | |||
1798 | 1800 | ||
1799 | static struct usb_gadget_driver probe_driver = { | 1801 | static struct usb_gadget_driver probe_driver = { |
1800 | .speed = USB_SPEED_HIGH, | 1802 | .speed = USB_SPEED_HIGH, |
1801 | .bind = gadgetfs_probe, | ||
1802 | .unbind = gadgetfs_nop, | 1803 | .unbind = gadgetfs_nop, |
1803 | .setup = (void *)gadgetfs_nop, | 1804 | .setup = (void *)gadgetfs_nop, |
1804 | .disconnect = gadgetfs_nop, | 1805 | .disconnect = gadgetfs_nop, |
@@ -1908,7 +1909,7 @@ dev_config (struct file *fd, const char __user *buf, size_t len, loff_t *ptr) | |||
1908 | 1909 | ||
1909 | /* triggers gadgetfs_bind(); then we can enumerate. */ | 1910 | /* triggers gadgetfs_bind(); then we can enumerate. */ |
1910 | spin_unlock_irq (&dev->lock); | 1911 | spin_unlock_irq (&dev->lock); |
1911 | value = usb_gadget_register_driver (&gadgetfs_driver); | 1912 | value = usb_gadget_probe_driver(&gadgetfs_driver, gadgetfs_bind); |
1912 | if (value != 0) { | 1913 | if (value != 0) { |
1913 | kfree (dev->buf); | 1914 | kfree (dev->buf); |
1914 | dev->buf = NULL; | 1915 | dev->buf = NULL; |
@@ -1994,6 +1995,7 @@ gadgetfs_make_inode (struct super_block *sb, | |||
1994 | struct inode *inode = new_inode (sb); | 1995 | struct inode *inode = new_inode (sb); |
1995 | 1996 | ||
1996 | if (inode) { | 1997 | if (inode) { |
1998 | inode->i_ino = get_next_ino(); | ||
1997 | inode->i_mode = mode; | 1999 | inode->i_mode = mode; |
1998 | inode->i_uid = default_uid; | 2000 | inode->i_uid = default_uid; |
1999 | inode->i_gid = default_gid; | 2001 | inode->i_gid = default_gid; |
@@ -2047,7 +2049,7 @@ gadgetfs_fill_super (struct super_block *sb, void *opts, int silent) | |||
2047 | return -ESRCH; | 2049 | return -ESRCH; |
2048 | 2050 | ||
2049 | /* fake probe to determine $CHIP */ | 2051 | /* fake probe to determine $CHIP */ |
2050 | (void) usb_gadget_register_driver (&probe_driver); | 2052 | (void) usb_gadget_probe_driver(&probe_driver, gadgetfs_probe); |
2051 | if (!CHIP) | 2053 | if (!CHIP) |
2052 | return -ENODEV; | 2054 | return -ENODEV; |
2053 | 2055 | ||
@@ -2099,11 +2101,11 @@ enomem0: | |||
2099 | } | 2101 | } |
2100 | 2102 | ||
2101 | /* "mount -t gadgetfs path /dev/gadget" ends up here */ | 2103 | /* "mount -t gadgetfs path /dev/gadget" ends up here */ |
2102 | static int | 2104 | static struct dentry * |
2103 | gadgetfs_get_sb (struct file_system_type *t, int flags, | 2105 | gadgetfs_mount (struct file_system_type *t, int flags, |
2104 | const char *path, void *opts, struct vfsmount *mnt) | 2106 | const char *path, void *opts) |
2105 | { | 2107 | { |
2106 | return get_sb_single (t, flags, opts, gadgetfs_fill_super, mnt); | 2108 | return mount_single (t, flags, opts, gadgetfs_fill_super); |
2107 | } | 2109 | } |
2108 | 2110 | ||
2109 | static void | 2111 | static void |
@@ -2121,7 +2123,7 @@ gadgetfs_kill_sb (struct super_block *sb) | |||
2121 | static struct file_system_type gadgetfs_type = { | 2123 | static struct file_system_type gadgetfs_type = { |
2122 | .owner = THIS_MODULE, | 2124 | .owner = THIS_MODULE, |
2123 | .name = shortname, | 2125 | .name = shortname, |
2124 | .get_sb = gadgetfs_get_sb, | 2126 | .mount = gadgetfs_mount, |
2125 | .kill_sb = gadgetfs_kill_sb, | 2127 | .kill_sb = gadgetfs_kill_sb, |
2126 | }; | 2128 | }; |
2127 | 2129 | ||