From: Al Viro Date: Thu, 19 Jul 2012 12:03:21 +0000 (+0400) Subject: move spu_forget() into spufs_rmdir() X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=67cba9fd645697f1c883390eedcf519353a9baa6;p=GitHub%2FLineageOS%2FG12%2Fandroid_kernel_amlogic_linux-4.9.git move spu_forget() into spufs_rmdir() now that __fput() is *not* done in any callchain containing mmput(), we can do that... Signed-off-by: Al Viro --- diff --git a/arch/powerpc/platforms/cell/spufs/inode.c b/arch/powerpc/platforms/cell/spufs/inode.c index d544d7816df3..4bff08139600 100644 --- a/arch/powerpc/platforms/cell/spufs/inode.c +++ b/arch/powerpc/platforms/cell/spufs/inode.c @@ -186,10 +186,13 @@ static void spufs_prune_dir(struct dentry *dir) static int spufs_rmdir(struct inode *parent, struct dentry *dir) { /* remove all entries */ + int res; spufs_prune_dir(dir); d_drop(dir); - - return simple_rmdir(parent, dir); + res = simple_rmdir(parent, dir); + /* We have to give up the mm_struct */ + spu_forget(SPUFS_I(dir->d_inode)->i_ctx); + return res; } static int spufs_fill_dir(struct dentry *dir, @@ -245,9 +248,6 @@ static int spufs_dir_close(struct inode *inode, struct file *file) mutex_unlock(&parent->i_mutex); WARN_ON(ret); - /* We have to give up the mm_struct */ - spu_forget(ctx); - return dcache_dir_close(inode, file); } @@ -497,7 +497,6 @@ spufs_create_context(struct inode *inode, struct dentry *dentry, if (affinity) mutex_unlock(&gang->aff_mutex); mutex_unlock(&inode->i_mutex); - spu_forget(SPUFS_I(dentry->d_inode)->i_ctx); goto out; }