From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Alessio Balsini <balsini@google.com>
Date: Tue, 27 Oct 2020 13:24:03 +0000
Subject: ANDROID: vfs: d_canonical_path for stacked FS

Inotify does not currently know when a filesystem is acting as a wrapper
around another fs. This means that inotify watchers will miss any
modifications to the base file, as well as any made in a separate stacked
fs that points to the same file.
d_canonical_path solves this problem by allowing the fs to map a dentry to
a path in the lower fs. Inotify can use it to find the appropriate place to
watch to be informed of all changes to a file.

[CPNOTE: 20/07/21] Lee: Requested status from Alessio via the bug

Original-Change-Id: I09563baffad1711a045e45c1bd0bd8713c2cc0b6

Test: FileObserverTest and FileObserverTestLegacyPath on Cuttlefish
Bug: 171780975
Signed-off-by: Daniel Rosenberg <drosen@google.com>
[astrachan: Folded 34df4102216e ("ANDROID: fsnotify: Notify lower fs of
            open") into this patch]
Signed-off-by: Alistair Strachan <astrachan@google.com>
Signed-off-by: Yongqin Liu <yongqin.liu@linaro.org>
Signed-off-by: Alessio Balsini <balsini@google.com>
Change-Id: Ifb6719eaa466ab9cc98ab4b02866de16f7c73cbf
[maennich: folded into this patch:
           ffea51ec1f7a ("ANDROID: vfs: d_canonical_path cleanup #if 0")]
Signed-off-by: Matthias Maennich <maennich@google.com>
---
 fs/notify/inotify/inotify_user.c | 16 ++++++++++++++--
 include/linux/dcache.h           |  1 +
 2 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/fs/notify/inotify/inotify_user.c b/fs/notify/inotify/inotify_user.c
--- a/fs/notify/inotify/inotify_user.c
+++ b/fs/notify/inotify/inotify_user.c
@@ -712,6 +712,8 @@ SYSCALL_DEFINE3(inotify_add_watch, int, fd, const char __user *, pathname,
 	struct fsnotify_group *group;
 	struct inode *inode;
 	struct path path;
+	struct path alteredpath;
+	struct path *canonical_path = &path;
 	struct fd f;
 	int ret;
 	unsigned flags = 0;
@@ -758,13 +760,23 @@ SYSCALL_DEFINE3(inotify_add_watch, int, fd, const char __user *, pathname,
 	if (ret)
 		goto fput_and_out;
 
+	/* support stacked filesystems */
+	if (path.dentry && path.dentry->d_op) {
+		if (path.dentry->d_op->d_canonical_path) {
+			path.dentry->d_op->d_canonical_path(&path,
+							    &alteredpath);
+			canonical_path = &alteredpath;
+			path_put(&path);
+		}
+	}
+
 	/* inode held in place by reference to path; group by fget on fd */
-	inode = path.dentry->d_inode;
+	inode = canonical_path->dentry->d_inode;
 	group = f.file->private_data;
 
 	/* create/update an inode mark */
 	ret = inotify_update_watch(group, inode, mask);
-	path_put(&path);
+	path_put(canonical_path);
 fput_and_out:
 	fdput(f);
 	return ret;
diff --git a/include/linux/dcache.h b/include/linux/dcache.h
--- a/include/linux/dcache.h
+++ b/include/linux/dcache.h
@@ -149,6 +149,7 @@ struct dentry_operations {
 	struct vfsmount *(*d_automount)(struct path *);
 	int (*d_manage)(const struct path *, bool);
 	struct dentry *(*d_real)(struct dentry *, const struct inode *);
+	void (*d_canonical_path)(const struct path *, struct path *);
 } ____cacheline_aligned;
 
 /*
