Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
Al Viro 2012-01-08 15:59:45 -05:00
Родитель 5b5f956035
Коммит 87da5b3264
1 изменённых файлов: 11 добавлений и 15 удалений

Просмотреть файл

@ -2035,7 +2035,6 @@ static int
gadgetfs_fill_super (struct super_block *sb, void *opts, int silent) gadgetfs_fill_super (struct super_block *sb, void *opts, int silent)
{ {
struct inode *inode; struct inode *inode;
struct dentry *d;
struct dev_data *dev; struct dev_data *dev;
if (the_device) if (the_device)
@ -2058,24 +2057,27 @@ gadgetfs_fill_super (struct super_block *sb, void *opts, int silent)
NULL, &simple_dir_operations, NULL, &simple_dir_operations,
S_IFDIR | S_IRUGO | S_IXUGO); S_IFDIR | S_IRUGO | S_IXUGO);
if (!inode) if (!inode)
goto enomem0; goto Enomem;
inode->i_op = &simple_dir_inode_operations; inode->i_op = &simple_dir_inode_operations;
if (!(d = d_alloc_root (inode))) if (!(sb->s_root = d_alloc_root (inode))) {
goto enomem1; iput(inode);
sb->s_root = d; goto Enomem;
}
/* the ep0 file is named after the controller we expect; /* the ep0 file is named after the controller we expect;
* user mode code can use it for sanity checks, like we do. * user mode code can use it for sanity checks, like we do.
*/ */
dev = dev_new (); dev = dev_new ();
if (!dev) if (!dev)
goto enomem2; goto Enomem;
dev->sb = sb; dev->sb = sb;
if (!gadgetfs_create_file (sb, CHIP, if (!gadgetfs_create_file (sb, CHIP,
dev, &dev_init_operations, dev, &dev_init_operations,
&dev->dentry)) &dev->dentry)) {
goto enomem3; put_dev(dev);
goto Enomem;
}
/* other endpoint files are available after hardware setup, /* other endpoint files are available after hardware setup,
* from binding to a controller. * from binding to a controller.
@ -2083,13 +2085,7 @@ gadgetfs_fill_super (struct super_block *sb, void *opts, int silent)
the_device = dev; the_device = dev;
return 0; return 0;
enomem3: Enomem:
put_dev (dev);
enomem2:
dput (d);
enomem1:
iput (inode);
enomem0:
return -ENOMEM; return -ENOMEM;
} }