summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAl Viro <viro@zeniv.linux.org.uk>2025-03-12 19:38:28 -0400
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2025-04-10 14:32:04 +0200
commitc4e72a0d75442237b6f3bcca10a7d81b89376d16 (patch)
tree8a39ffc072af9de00e5c65f09c40c4f967c765b6
parent53b189651c33b5f1fb3b755e6a37a8206978514e (diff)
downloadlinux-c4e72a0d75442237b6f3bcca10a7d81b89376d16.tar.gz
linux-c4e72a0d75442237b6f3bcca10a7d81b89376d16.tar.bz2
linux-c4e72a0d75442237b6f3bcca10a7d81b89376d16.zip
spufs: fix a leak in spufs_create_context()
[ Upstream commit 0f5cce3fc55b08ee4da3372baccf4bcd36a98396 ] Leak fixes back in 2008 missed one case - if we are trying to set affinity and spufs_mkdir() fails, we need to drop the reference to neighbor. Fixes: 58119068cb27 "[POWERPC] spufs: Fix memory leak on SPU affinity" Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: Sasha Levin <sashal@kernel.org>
-rw-r--r--arch/powerpc/platforms/cell/spufs/inode.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/arch/powerpc/platforms/cell/spufs/inode.c b/arch/powerpc/platforms/cell/spufs/inode.c
index 1095be5186eb..ea3082f2f9d1 100644
--- a/arch/powerpc/platforms/cell/spufs/inode.c
+++ b/arch/powerpc/platforms/cell/spufs/inode.c
@@ -436,8 +436,11 @@ spufs_create_context(struct inode *inode, struct dentry *dentry,
}
ret = spufs_mkdir(inode, dentry, flags, mode & 0777);
- if (ret)
+ if (ret) {
+ if (neighbor)
+ put_spu_context(neighbor);
goto out_aff_unlock;
+ }
if (affinity) {
spufs_set_affinity(flags, SPUFS_I(d_inode(dentry))->i_ctx,