Commit 08b95c33 authored by Amir Goldstein's avatar Amir Goldstein Committed by Jan Kara
Browse files

fanotify: remove event FAN_DIR_MODIFY

It was never enabled in uapi and its functionality is about to be
superseded by events FAN_CREATE, FAN_DELETE, FAN_MOVE with group
flag FAN_REPORT_NAME.

Keep a place holder variable name_event instead of removing the
name recording code since it will be used by the new events.

Link: https://lore.kernel.org/r/20200708111156.24659-17-amir73il@gmail.com


Signed-off-by: default avatarAmir Goldstein <amir73il@gmail.com>
Signed-off-by: default avatarJan Kara <jack@suse.cz>
parent b54cecf5
Loading
Loading
Loading
Loading
+2 −7
Original line number Diff line number Diff line
@@ -425,6 +425,7 @@ static struct fanotify_event *fanotify_alloc_event(struct fsnotify_group *group,
	gfp_t gfp = GFP_KERNEL_ACCOUNT;
	struct inode *id = fanotify_fid_inode(mask, data, data_type, dir);
	const struct path *path = fsnotify_data_path(data, data_type);
	bool name_event = false;

	/*
	 * For queues with unlimited length lost events are not expected and
@@ -442,12 +443,7 @@ static struct fanotify_event *fanotify_alloc_event(struct fsnotify_group *group,

	if (fanotify_is_perm_event(mask)) {
		event = fanotify_alloc_perm_event(path, gfp);
	} else if (mask & FAN_DIR_MODIFY && !(WARN_ON_ONCE(!file_name))) {
		/*
		 * For FAN_DIR_MODIFY event, we report the fid of the directory
		 * and the name of the modified entry.
		 * Allocate an fanotify_name_event struct and copy the name.
		 */
	} else if (name_event && file_name) {
		event = fanotify_alloc_name_event(id, fsid, file_name, gfp);
	} else if (FAN_GROUP_FLAG(group, FAN_REPORT_FID)) {
		event = fanotify_alloc_fid_event(id, fsid, gfp);
@@ -528,7 +524,6 @@ static int fanotify_handle_event(struct fsnotify_group *group, u32 mask,
	BUILD_BUG_ON(FAN_MOVED_FROM != FS_MOVED_FROM);
	BUILD_BUG_ON(FAN_CREATE != FS_CREATE);
	BUILD_BUG_ON(FAN_DELETE != FS_DELETE);
	BUILD_BUG_ON(FAN_DIR_MODIFY != FS_DIR_MODIFY);
	BUILD_BUG_ON(FAN_DELETE_SELF != FS_DELETE_SELF);
	BUILD_BUG_ON(FAN_MOVE_SELF != FS_MOVE_SELF);
	BUILD_BUG_ON(FAN_EVENT_ON_CHILD != FS_EVENT_ON_CHILD);
+1 −1
Original line number Diff line number Diff line
@@ -393,7 +393,7 @@ static __init int fsnotify_init(void)
{
	int ret;

	BUILD_BUG_ON(HWEIGHT32(ALL_FSNOTIFY_BITS) != 26);
	BUILD_BUG_ON(HWEIGHT32(ALL_FSNOTIFY_BITS) != 25);

	ret = init_srcu_struct(&fsnotify_mark_srcu);
	if (ret)
+0 −6
Original line number Diff line number Diff line
@@ -30,12 +30,6 @@ static inline void fsnotify_name(struct inode *dir, __u32 mask,
				 const struct qstr *name, u32 cookie)
{
	fsnotify(dir, mask, child, FSNOTIFY_EVENT_INODE, name, cookie);
	/*
	 * Send another flavor of the event without child inode data and
	 * without the specific event type (e.g. FS_CREATE|FS_IS_DIR).
	 * The name is relative to the dir inode the event is reported to.
	 */
	fsnotify(dir, FS_DIR_MODIFY, dir, FSNOTIFY_EVENT_INODE, name, 0);
}

static inline void fsnotify_dirent(struct inode *dir, struct dentry *dentry,
+1 −3
Original line number Diff line number Diff line
@@ -47,7 +47,6 @@
#define FS_OPEN_PERM		0x00010000	/* open event in an permission hook */
#define FS_ACCESS_PERM		0x00020000	/* access event in a permissions hook */
#define FS_OPEN_EXEC_PERM	0x00040000	/* open/exec event in a permission hook */
#define FS_DIR_MODIFY		0x00080000	/* Directory entry was modified */

#define FS_EXCL_UNLINK		0x04000000	/* do not send events if object is unlinked */
/* This inode cares about things that happen to its children.  Always set for
@@ -67,8 +66,7 @@
 * The watching parent may get an FS_ATTRIB|FS_EVENT_ON_CHILD event
 * when a directory entry inside a child subdir changes.
 */
#define ALL_FSNOTIFY_DIRENT_EVENTS	(FS_CREATE | FS_DELETE | FS_MOVE | \
					 FS_DIR_MODIFY)
#define ALL_FSNOTIFY_DIRENT_EVENTS	(FS_CREATE | FS_DELETE | FS_MOVE)

#define ALL_FSNOTIFY_PERM_EVENTS (FS_OPEN_PERM | FS_ACCESS_PERM | \
				  FS_OPEN_EXEC_PERM)
+0 −1
Original line number Diff line number Diff line
@@ -24,7 +24,6 @@
#define FAN_OPEN_PERM		0x00010000	/* File open in perm check */
#define FAN_ACCESS_PERM		0x00020000	/* File accessed in perm check */
#define FAN_OPEN_EXEC_PERM	0x00040000	/* File open/exec in perm check */
#define FAN_DIR_MODIFY		0x00080000	/* Directory entry was modified */

#define FAN_EVENT_ON_CHILD	0x08000000	/* Interested in child events */