]> bbs.cooldavid.org Git - net-next-2.6.git/blobdiff - arch/powerpc/platforms/cell/spufs/inode.c
Merge commit 'origin'
[net-next-2.6.git] / arch / powerpc / platforms / cell / spufs / inode.c
index 2c8b8091250f0804f52346ca31b2a27c7ecc6057..cb85d237e492b7156745acc396f308fd99068a34 100644 (file)
@@ -298,8 +298,8 @@ spufs_mkdir(struct inode *dir, struct dentry *dentry, unsigned int flags,
 
        d_instantiate(dentry, inode);
        dget(dentry);
-       dir->i_nlink++;
-       dentry->d_inode->i_nlink++;
+       inc_nlink(dir);
+       inc_nlink(dentry->d_inode);
        goto out;
 
 out_free_ctx:
@@ -496,6 +496,8 @@ spufs_create_context(struct inode *inode, struct dentry *dentry,
        ret = spufs_context_open(dget(dentry), mntget(mnt));
        if (ret < 0) {
                WARN_ON(spufs_rmdir(inode, dentry));
+               if (affinity)
+                       mutex_unlock(&gang->aff_mutex);
                mutex_unlock(&inode->i_mutex);
                spu_forget(SPUFS_I(dentry->d_inode)->i_ctx);
                goto out;
@@ -538,8 +540,8 @@ spufs_mkgang(struct inode *dir, struct dentry *dentry, int mode)
        inode->i_fop = &simple_dir_operations;
 
        d_instantiate(dentry, inode);
-       dir->i_nlink++;
-       dentry->d_inode->i_nlink++;
+       inc_nlink(dir);
+       inc_nlink(dentry->d_inode);
        return ret;
 
 out_iput:
@@ -755,6 +757,7 @@ spufs_create_root(struct super_block *sb, void *data)
        inode->i_op = &simple_dir_inode_operations;
        inode->i_fop = &simple_dir_operations;
        SPUFS_I(inode)->i_ctx = NULL;
+       inc_nlink(inode);
 
        ret = -EINVAL;
        if (!spufs_parse_options(sb, data, inode))