Thread (26 messages) flat view 26 messages, 5 authors, 2021-05-24

Re: [PATCH 02/11] fanotify: Split fsid check from other fid mode checks

From: Amir Goldstein <amir73il@gmail.com>
Date: 2021-05-21 08:33:16
Also in: linux-fsdevel

On Fri, May 21, 2021 at 5:42 AM Gabriel Krisman Bertazi
[off-list ref] wrote:
quoted hunk ↗ jump to hunk
FAN_ERROR will require fsid, but not necessarily require the filesystem
to expose a file handle.  Split those checks into different functions, so
they can be used separately when setting up an event.

Signed-off-by: Gabriel Krisman Bertazi <redacted>

Changes since v1:
  (Amir)
  - Rename fanotify_check_path_fsid -> fanotify_test_fsid
  - Use dentry directly instead of path
---
 fs/notify/fanotify/fanotify_user.c | 43 ++++++++++++++++++------------
 1 file changed, 26 insertions(+), 17 deletions(-)
diff --git a/fs/notify/fanotify/fanotify_user.c b/fs/notify/fanotify/fanotify_user.c
index 3ccdee3c9f1e..9cc6c8808ed5 100644
--- a/fs/notify/fanotify/fanotify_user.c
+++ b/fs/notify/fanotify/fanotify_user.c
@@ -1178,15 +1178,31 @@ SYSCALL_DEFINE2(fanotify_init, unsigned int, flags, unsigned int, event_f_flags)
 }

 /* Check if filesystem can encode a unique fid */
-static int fanotify_test_fid(struct path *path, __kernel_fsid_t *fsid)
+static int fanotify_test_fid(struct dentry *dentry)
+{
+       /*
+        * We need to make sure that the file system supports at least
+        * encoding a file handle so user can use name_to_handle_at() to
+        * compare fid returned with event to the file handle of watched
+        * objects. However, name_to_handle_at() requires that the
+        * filesystem also supports decoding file handles.
+        */
+       if (!dentry->d_sb->s_export_op ||
+           !dentry->d_sb->s_export_op->fh_to_dentry)
+               return -EOPNOTSUPP;
+
+       return 0;
+}
+
Nit: move this helper below test_fsid.
The patch will be smaller and easier to review and more
important, less churn that hides the true git blame on the code above.

Thanks,
Amir.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help