Like fsnotify_delete(), let fsnotify_create() handle creation of both dir and non-dir objects, if d_inode is available at creation time. Unlike fsnotify_rmdir(), we do not call fsnotify_create() from fsnotify_mkdir(), because of the case where d_inode is instantiated lazily (e.g. kernfs). Signed-off-by: Amir Goldstein --- include/linux/fsnotify.h | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/include/linux/fsnotify.h b/include/linux/fsnotify.h index 079c18bcdbde6..13156d165d845 100644 --- a/include/linux/fsnotify.h +++ b/include/linux/fsnotify.h @@ -318,9 +318,15 @@ static inline void fsnotify_inoderemove(struct inode *inode) */ static inline void fsnotify_create(struct inode *dir, struct dentry *dentry) { + struct inode *inode = d_inode(dentry); + __u32 mask = FS_CREATE; + + if (inode && S_ISDIR(inode->i_mode)) + mask |= FS_ISDIR; + audit_inode_child(dir, dentry, AUDIT_TYPE_CHILD_CREATE); - fsnotify_dirent(dir, dentry, FS_CREATE); + fsnotify_dirent(dir, dentry, mask); } /* -- 2.53.0