Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 28346
b: refs/heads/master
c: 0ae4ea8
h: refs/heads/master
v: v3
  • Loading branch information
Alan Stern authored and Greg Kroah-Hartman committed Jun 21, 2006
1 parent 83b991b commit 57d6182
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 23 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 83196b52053068f0240371ad2efd9d6ad685bbeb
refs/heads/master: 0ae4ea8092e1277cfca07cade7eaba5f594076c1
51 changes: 29 additions & 22 deletions trunk/drivers/usb/gadget/inode.c
Original file line number Diff line number Diff line change
Expand Up @@ -1038,7 +1038,7 @@ ep0_read (struct file *fd, char __user *buf, size_t len, loff_t *ptr)
/* ep0 can't deliver events when STATE_SETUP */
for (i = 0; i < n; i++) {
if (dev->event [i].type == GADGETFS_SETUP) {
len = n = i + 1;
len = i + 1;
len *= sizeof (struct usb_gadgetfs_event);
n = 0;
break;
Expand Down Expand Up @@ -1586,13 +1586,13 @@ gadgetfs_create_file (struct super_block *sb, char const *name,
static int activate_ep_files (struct dev_data *dev)
{
struct usb_ep *ep;
struct ep_data *data;

gadget_for_each_ep (ep, dev->gadget) {
struct ep_data *data;

data = kzalloc(sizeof(*data), GFP_KERNEL);
if (!data)
goto enomem;
goto enomem0;
data->state = STATE_EP_DISABLED;
init_MUTEX (&data->lock);
init_waitqueue_head (&data->wait);
Expand All @@ -1607,21 +1607,23 @@ static int activate_ep_files (struct dev_data *dev)

data->req = usb_ep_alloc_request (ep, GFP_KERNEL);
if (!data->req)
goto enomem;
goto enomem1;

data->inode = gadgetfs_create_file (dev->sb, data->name,
data, &ep_config_operations,
&data->dentry);
if (!data->inode) {
usb_ep_free_request(ep, data->req);
kfree (data);
goto enomem;
}
if (!data->inode)
goto enomem2;
list_add_tail (&data->epfiles, &dev->epfiles);
}
return 0;

enomem:
enomem2:
usb_ep_free_request (ep, data->req);
enomem1:
put_dev (dev);
kfree (data);
enomem0:
DBG (dev, "%s enomem\n", __FUNCTION__);
destroy_ep_files (dev);
return -ENOMEM;
Expand Down Expand Up @@ -1792,7 +1794,7 @@ static struct usb_gadget_driver probe_driver = {
*
* After initialization, the device stays active for as long as that
* $CHIP file is open. Events may then be read from that descriptor,
* such configuration notifications. More complex drivers will handle
* such as configuration notifications. More complex drivers will handle
* some control requests in user space.
*/

Expand Down Expand Up @@ -2032,34 +2034,39 @@ gadgetfs_fill_super (struct super_block *sb, void *opts, int silent)
NULL, &simple_dir_operations,
S_IFDIR | S_IRUGO | S_IXUGO);
if (!inode)
return -ENOMEM;
goto enomem0;
inode->i_op = &simple_dir_inode_operations;
if (!(d = d_alloc_root (inode))) {
iput (inode);
return -ENOMEM;
}
if (!(d = d_alloc_root (inode)))
goto enomem1;
sb->s_root = d;

/* the ep0 file is named after the controller we expect;
* user mode code can use it for sanity checks, like we do.
*/
dev = dev_new ();
if (!dev)
return -ENOMEM;
goto enomem2;

dev->sb = sb;
if (!(inode = gadgetfs_create_file (sb, CHIP,
if (!gadgetfs_create_file (sb, CHIP,
dev, &dev_init_operations,
&dev->dentry))) {
put_dev(dev);
return -ENOMEM;
}
&dev->dentry))
goto enomem3;

/* other endpoint files are available after hardware setup,
* from binding to a controller.
*/
the_device = dev;
return 0;

enomem3:
put_dev (dev);
enomem2:
dput (d);
enomem1:
iput (inode);
enomem0:
return -ENOMEM;
}

/* "mount -t gadgetfs path /dev/gadget" ends up here */
Expand Down

0 comments on commit 57d6182

Please sign in to comment.