diff options
| -rw-r--r-- | drivers/usb/gadget/function/f_fs.c | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/drivers/usb/gadget/function/f_fs.c b/drivers/usb/gadget/function/f_fs.c index 40868ceb765c..4bf61017b42d 100644 --- a/drivers/usb/gadget/function/f_fs.c +++ b/drivers/usb/gadget/function/f_fs.c @@ -1899,17 +1899,18 @@ static int ffs_sb_create_file(struct super_block *sb, const char *name, struct dentry *dentry; struct inode *inode; - dentry = d_alloc_name(sb->s_root, name); - if (!dentry) - return -ENOMEM; - inode = ffs_sb_make_inode(sb, data, fops, NULL, &ffs->file_perms); - if (!inode) { - dput(dentry); + if (!inode) return -ENOMEM; + dentry = simple_start_creating(sb->s_root, name); + if (IS_ERR(dentry)) { + iput(inode); + return PTR_ERR(dentry); } - d_add(dentry, inode); + d_make_persistent(dentry, inode); + + simple_done_creating(dentry); return 0; } @@ -2098,7 +2099,7 @@ static void ffs_data_reset(struct ffs_data *ffs); static void ffs_fs_kill_sb(struct super_block *sb) { - kill_litter_super(sb); + kill_anon_super(sb); if (sb->s_fs_info) { struct ffs_data *ffs = sb->s_fs_info; ffs->state = FFS_CLOSING; |
