Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

kernfs: Acquire kernfs_rwsem in kernfs_notify_workfn().

kernfs_notify_workfn() dereferences kernfs_node::name and passes it
later to fsnotify(). If the node is renamed then the previously observed
name pointer becomes invalid.

Acquire kernfs_root::kernfs_rwsem to block renames of the node.

Acked-by: Tejun Heo <tj@kernel.org>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Link: https://lore.kernel.org/r/20250213145023.2820193-2-bigeasy@linutronix.de
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

authored by

Sebastian Andrzej Siewior and committed by
Greg Kroah-Hartman
400188ae a64dcfb4

+2
+2
fs/kernfs/file.c
··· 911 911 /* kick fsnotify */ 912 912 913 913 down_read(&root->kernfs_supers_rwsem); 914 + down_read(&root->kernfs_rwsem); 914 915 list_for_each_entry(info, &kernfs_root(kn)->supers, node) { 915 916 struct kernfs_node *parent; 916 917 struct inode *p_inode = NULL; ··· 948 947 iput(inode); 949 948 } 950 949 950 + up_read(&root->kernfs_rwsem); 951 951 up_read(&root->kernfs_supers_rwsem); 952 952 kernfs_put(kn); 953 953 goto repeat;