gadgetfs_fill_super (struct super_block *sb, void *opts, int silent)
 {
        struct inode    *inode;
-       struct dentry   *d;
        struct dev_data *dev;
 
        if (the_device)
                        NULL, &simple_dir_operations,
                        S_IFDIR | S_IRUGO | S_IXUGO);
        if (!inode)
-               goto enomem0;
+               goto Enomem;
        inode->i_op = &simple_dir_inode_operations;
-       if (!(d = d_alloc_root (inode)))
-               goto enomem1;
-       sb->s_root = d;
+       if (!(sb->s_root = d_alloc_root (inode))) {
+               iput(inode);
+               goto Enomem;
+       }
 
        /* 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)
-               goto enomem2;
+               goto Enomem;
 
        dev->sb = sb;
        if (!gadgetfs_create_file (sb, CHIP,
                                dev, &dev_init_operations,
-                               &dev->dentry))
-               goto enomem3;
+                               &dev->dentry)) {
+               put_dev(dev);
+               goto Enomem;
+       }
 
        /* 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:
+Enomem:
        return -ENOMEM;
 }