On Mon, Aug 3, 2020 at 10:47 AM 'Kalesh Singh' via kernel-team <kernel-team@xxxxxxxxxxx> wrote: > > Provides a per process hook for the acquisition of file descriptors, > despite the method used to obtain the descriptor. > Hi, So apart from all of the comments received, I think it is hard to understand what the problem is, what the front-end looks like etc. Your commit message is 1 line only. I do remember some of the challenges discussed before, but it would describe the problem in the commit message in detail and then discuss why this solution is fit. Please read submitting-patches.rst especially "2) Describe your changes". thanks, - Joel > Signed-off-by: Kalesh Singh <kaleshsingh@xxxxxxxxxx> > --- > Documentation/filesystems/vfs.rst | 5 +++++ > fs/file.c | 3 +++ > include/linux/fs.h | 1 + > 3 files changed, 9 insertions(+) > > diff --git a/Documentation/filesystems/vfs.rst b/Documentation/filesystems/vfs.rst > index ed17771c212b..95b30142c8d9 100644 > --- a/Documentation/filesystems/vfs.rst > +++ b/Documentation/filesystems/vfs.rst > @@ -1123,6 +1123,11 @@ otherwise noted. > ``fadvise`` > possibly called by the fadvise64() system call. > > +``fd_install`` > + called by the VFS when a file descriptor is installed in the > + process's file descriptor table, regardless how the file descriptor > + was acquired -- be it via the open syscall, received over IPC, etc. > + > Note that the file operations are implemented by the specific > filesystem in which the inode resides. When opening a device node > (character or block special) most filesystems will call special > diff --git a/fs/file.c b/fs/file.c > index abb8b7081d7a..f5db8622b851 100644 > --- a/fs/file.c > +++ b/fs/file.c > @@ -616,6 +616,9 @@ void __fd_install(struct files_struct *files, unsigned int fd, > void fd_install(unsigned int fd, struct file *file) > { > __fd_install(current->files, fd, file); > + > + if (file->f_op->fd_install) > + file->f_op->fd_install(fd, file); > } > > EXPORT_SYMBOL(fd_install); > diff --git a/include/linux/fs.h b/include/linux/fs.h > index f5abba86107d..b976fbe8c902 100644 > --- a/include/linux/fs.h > +++ b/include/linux/fs.h > @@ -1864,6 +1864,7 @@ struct file_operations { > struct file *file_out, loff_t pos_out, > loff_t len, unsigned int remap_flags); > int (*fadvise)(struct file *, loff_t, loff_t, int); > + void (*fd_install)(int, struct file *); > } __randomize_layout; > > struct inode_operations { > -- > 2.28.0.163.g6104cc2f0b6-goog > > -- > To unsubscribe from this group and stop receiving emails from it, send an email to kernel-team+unsubscribe@xxxxxxxxxxx. >