diff options
Diffstat (limited to 'fs/hfsplus/super.c')
-rw-r--r-- | fs/hfsplus/super.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/fs/hfsplus/super.c b/fs/hfsplus/super.c index edf0a801446b..427682ca9e48 100644 --- a/fs/hfsplus/super.c +++ b/fs/hfsplus/super.c | |||
@@ -499,9 +499,16 @@ static int hfsplus_fill_super(struct super_block *sb, void *data, int silent) | |||
499 | if (!sbi->hidden_dir) { | 499 | if (!sbi->hidden_dir) { |
500 | mutex_lock(&sbi->vh_mutex); | 500 | mutex_lock(&sbi->vh_mutex); |
501 | sbi->hidden_dir = hfsplus_new_inode(sb, S_IFDIR); | 501 | sbi->hidden_dir = hfsplus_new_inode(sb, S_IFDIR); |
502 | hfsplus_create_cat(sbi->hidden_dir->i_ino, root, &str, | 502 | if (!sbi->hidden_dir) { |
503 | sbi->hidden_dir); | 503 | mutex_unlock(&sbi->vh_mutex); |
504 | err = -ENOMEM; | ||
505 | goto out_put_root; | ||
506 | } | ||
507 | err = hfsplus_create_cat(sbi->hidden_dir->i_ino, root, | ||
508 | &str, sbi->hidden_dir); | ||
504 | mutex_unlock(&sbi->vh_mutex); | 509 | mutex_unlock(&sbi->vh_mutex); |
510 | if (err) | ||
511 | goto out_put_hidden_dir; | ||
505 | 512 | ||
506 | hfsplus_mark_inode_dirty(sbi->hidden_dir, | 513 | hfsplus_mark_inode_dirty(sbi->hidden_dir, |
507 | HFSPLUS_I_CAT_DIRTY); | 514 | HFSPLUS_I_CAT_DIRTY); |