| From bb085cf447061ce3639127c33b8786917cd3a75e Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Wed, 8 Jul 2020 14:11:40 +0300 |
| Subject: kernfs: do not call fsnotify() with name without a parent |
| |
| From: Amir Goldstein <amir73il@gmail.com> |
| |
| [ Upstream commit 9991bb84b27a2594187898f261866cfc50255454 ] |
| |
| When creating an FS_MODIFY event on inode itself (not on parent) |
| the file_name argument should be NULL. |
| |
| The change to send a non NULL name to inode itself was done on purpuse |
| as part of another commit, as Tejun writes: "...While at it, supply the |
| target file name to fsnotify() from kernfs_node->name.". |
| |
| But this is wrong practice and inconsistent with inotify behavior when |
| watching a single file. When a child is being watched (as opposed to the |
| parent directory) the inotify event should contain the watch descriptor, |
| but not the file name. |
| |
| Fixes: df6a58c5c5aa ("kernfs: don't depend on d_find_any_alias()...") |
| Link: https://lore.kernel.org/r/20200708111156.24659-5-amir73il@gmail.com |
| Acked-by: Tejun Heo <tj@kernel.org> |
| Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| Signed-off-by: Amir Goldstein <amir73il@gmail.com> |
| Signed-off-by: Jan Kara <jack@suse.cz> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| fs/kernfs/file.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| diff --git a/fs/kernfs/file.c b/fs/kernfs/file.c |
| index 34366db3620d6..2a1879a6e7957 100644 |
| --- a/fs/kernfs/file.c |
| +++ b/fs/kernfs/file.c |
| @@ -912,7 +912,7 @@ static void kernfs_notify_workfn(struct work_struct *work) |
| } |
| |
| fsnotify(inode, FS_MODIFY, inode, FSNOTIFY_EVENT_INODE, |
| - &name, 0); |
| + NULL, 0); |
| iput(inode); |
| } |
| |
| -- |
| 2.25.1 |
| |