|
@@ -499,9 +499,16 @@ static int hfsplus_fill_super(struct super_block *sb, void *data, int silent)
|
|
|
if (!sbi->hidden_dir) {
|
|
|
mutex_lock(&sbi->vh_mutex);
|
|
|
sbi->hidden_dir = hfsplus_new_inode(sb, S_IFDIR);
|
|
|
- hfsplus_create_cat(sbi->hidden_dir->i_ino, root, &str,
|
|
|
- sbi->hidden_dir);
|
|
|
+ if (!sbi->hidden_dir) {
|
|
|
+ mutex_unlock(&sbi->vh_mutex);
|
|
|
+ err = -ENOMEM;
|
|
|
+ goto out_put_root;
|
|
|
+ }
|
|
|
+ err = hfsplus_create_cat(sbi->hidden_dir->i_ino, root,
|
|
|
+ &str, sbi->hidden_dir);
|
|
|
mutex_unlock(&sbi->vh_mutex);
|
|
|
+ if (err)
|
|
|
+ goto out_put_hidden_dir;
|
|
|
|
|
|
hfsplus_mark_inode_dirty(sbi->hidden_dir,
|
|
|
HFSPLUS_I_CAT_DIRTY);
|