Re: fsnotify path hooks

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Apr 19, 2021 at 07:41:51PM +0300, Amir Goldstein wrote:

> Would you be willing to make an exception for notify_change()
> and pass mnt arg to the helper? and if so, which of the following
> is the lesser evil in your opinion:
> 
> 1. Optional mnt arg
> --------------------------
> int notify_change(struct vfsmount *mnt,
>                  struct user_namespace *mnt_userns,
>                  struct dentry *dentry, struct iattr *attr,
>                  struct inode **delegated_inode)
> 
> @mnt is non-NULL from syscalls and nfsd and NULL from other callers.
> 
> 2. path instead of dentry
> --------------------------------
> int notify_change(struct user_namespace *mnt_userns,
>                  struct path *path, struct iattr *attr,
>                  struct inode **delegated_inode)
> 
> This is symmetric with vfs_getattr().
> syscalls and nfsd use the actual path.
> overlayfs, ecryptfs, cachefiles compose a path from the private mount
> (Christian posted patches to make ecryptfs, cachefiles mount private).
> 
> 3. Mandatory mnt arg
> -----------------------------
> Like #1, but use some private mount instead of NULL, similar to the
> mnt_userns arg.
> 
> Any of the above acceptable?
> 
> Pushed option #1 (along with rest of the work) to:
> https://github.com/amir73il/linux/commits/fsnotify_path_hooks
> 
> It's only sanity tested.

	Out of that bunch only #2 is more or less tolerable.
HOWEVER, if we go that way, mnt_user_ns crap must go, and
I really want to see details on all callers - which mount are
you going to use in each case.

	The thing that is not going to be acceptable is
a combination of mount from one filesystem and dentry from
another.  In particular, file_remove_privs() is going to be
interesting.

	Note, BTW, that ftruncate() and file_remove_privs()
are different in that respect - the latter hits d_real()
(by way of file_dentry()), the former does not.  Which one
is correct and if both are, why are their needs different?



[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [Samba]     [Device Mapper]     [CEPH Development]

  Powered by Linux