projects
/
platform
/
kernel
/
linux-starfive.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
9c4f52b
)
kernfs: fix missing kernfs_idr_lock to remove an ID from the IDR
author
Muchun Song
<songmuchun@bytedance.com>
Tue, 23 May 2023 02:40:17 +0000
(10:40 +0800)
committer
Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
Wed, 19 Jul 2023 14:21:53 +0000
(16:21 +0200)
[ Upstream commit
30480b988f88c279752f3202a26b6fee5f586aef
]
The root->ino_idr is supposed to be protected by kernfs_idr_lock, fix
it.
Fixes:
488dee96bb62
("kernfs: allow creating kernfs objects with arbitrary uid/gid")
Signed-off-by: Muchun Song <songmuchun@bytedance.com>
Acked-by: Tejun Heo <tj@kernel.org>
Link:
https://lore.kernel.org/r/20230523024017.24851-1-songmuchun@bytedance.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
fs/kernfs/dir.c
patch
|
blob
|
history
diff --git
a/fs/kernfs/dir.c
b/fs/kernfs/dir.c
index
f33b3ba
..
44842e6
100644
(file)
--- a/
fs/kernfs/dir.c
+++ b/
fs/kernfs/dir.c
@@
-652,7
+652,9
@@
static struct kernfs_node *__kernfs_new_node(struct kernfs_root *root,
return kn;
err_out3:
+ spin_lock(&kernfs_idr_lock);
idr_remove(&root->ino_idr, (u32)kernfs_ino(kn));
+ spin_unlock(&kernfs_idr_lock);
err_out2:
kmem_cache_free(kernfs_node_cache, kn);
err_out1: