]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
erofs: fix erofs_insert_workgroup() lockref usage
authorGao Xiang <hsiangkao@linux.alibaba.com>
Tue, 31 Oct 2023 06:05:24 +0000 (14:05 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 20 Nov 2023 10:57:11 +0000 (11:57 +0100)
commit531a6b22b5afd4af0244a5cc735998e73135fc46
tree28232022ca1f62412f8f1fc2ee1ef63598e8b448
parent300041583ea56a63c1a30b17d71e05603adabe23
erofs: fix erofs_insert_workgroup() lockref usage

[ Upstream commit 1a0ac8bd7a4fa5b2f4ef14c3b1e9d6e5a5faae06 ]

As Linus pointed out [1], lockref_put_return() is fundamentally
designed to be something that can fail.  It behaves as a fastpath-only
thing, and the failure case needs to be handled anyway.

Actually, since the new pcluster was just allocated without being
populated, it won't be accessed by others until it is inserted into
XArray, so lockref helpers are actually unneeded here.

Let's just set the proper reference count on initializing.

[1] https://lore.kernel.org/r/CAHk-=whCga8BeQnJ3ZBh_Hfm9ctba_wpF444LpwRybVNMzO6Dw@mail.gmail.com

Fixes: 7674a42f35ea ("erofs: use struct lockref to replace handcrafted approach")
Reviewed-by: Chao Yu <chao@kernel.org>
Link: https://lore.kernel.org/r/20231031060524.1103921-1-hsiangkao@linux.alibaba.com
Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
fs/erofs/utils.c
fs/erofs/zdata.c