Commit 477cf917 authored by Amir Goldstein's avatar Amir Goldstein Committed by Jan Kara
Browse files

fsnotify: use an enum for group priority constants



And use meaningfull names for the constants.

Signed-off-by: default avatarAmir Goldstein <amir73il@gmail.com>
Signed-off-by: default avatarJan Kara <jack@suse.cz>
Message-Id: <20240317184154.1200192-10-amir73il@gmail.com>
parent cb5d4f48
Loading
Loading
Loading
Loading
+5 −6
Original line number Diff line number Diff line
@@ -1516,13 +1516,13 @@ SYSCALL_DEFINE2(fanotify_init, unsigned int, flags, unsigned int, event_f_flags)
	INIT_LIST_HEAD(&group->fanotify_data.access_list);
	switch (class) {
	case FAN_CLASS_NOTIF:
		group->priority = FS_PRIO_0;
		group->priority = FSNOTIFY_PRIO_NORMAL;
		break;
	case FAN_CLASS_CONTENT:
		group->priority = FS_PRIO_1;
		group->priority = FSNOTIFY_PRIO_CONTENT;
		break;
	case FAN_CLASS_PRE_CONTENT:
		group->priority = FS_PRIO_2;
		group->priority = FSNOTIFY_PRIO_PRE_CONTENT;
		break;
	default:
		fd = -EINVAL;
@@ -1774,12 +1774,11 @@ static int do_fanotify_mark(int fanotify_fd, unsigned int flags, __u64 mask,
		goto fput_and_out;

	/*
	 * group->priority == FS_PRIO_0 == FAN_CLASS_NOTIF.  These are not
	 * allowed to set permissions events.
	 * Permission events require minimum priority FAN_CLASS_CONTENT.
	 */
	ret = -EINVAL;
	if (mask & FANOTIFY_PERM_EVENTS &&
	    group->priority == FS_PRIO_0)
	    group->priority < FSNOTIFY_PRIO_CONTENT)
		goto fput_and_out;

	if (mask & FAN_FS_ERROR &&
+12 −8
Original line number Diff line number Diff line
@@ -176,6 +176,17 @@ struct fsnotify_event {
	struct list_head list;
};

/*
 * fsnotify group priorities.
 * Events are sent in order from highest priority to lowest priority.
 */
enum fsnotify_group_prio {
	FSNOTIFY_PRIO_NORMAL = 0,	/* normal notifiers, no permissions */
	FSNOTIFY_PRIO_CONTENT,		/* fanotify permission events */
	FSNOTIFY_PRIO_PRE_CONTENT,	/* fanotify pre-content events */
	__FSNOTIFY_PRIO_NUM
};

/*
 * A group is a "thing" that wants to receive notification about filesystem
 * events.  The mask holds the subset of event types this group cares about.
@@ -201,14 +212,7 @@ struct fsnotify_group {
	wait_queue_head_t notification_waitq;	/* read() on the notification file blocks on this waitq */
	unsigned int q_len;			/* events on the queue */
	unsigned int max_events;		/* maximum events allowed on the list */
	/*
	 * Valid fsnotify group priorities.  Events are send in order from highest
	 * priority to lowest priority.  We default to the lowest priority.
	 */
	#define FS_PRIO_0	0 /* normal notifiers, no permissions */
	#define FS_PRIO_1	1 /* fanotify content based access control */
	#define FS_PRIO_2	2 /* fanotify pre-content access */
	unsigned int priority;
	enum fsnotify_group_prio priority;	/* priority for sending events */
	bool shutdown;		/* group is being shut down, don't queue more events */

#define FSNOTIFY_GROUP_USER	0x01 /* user allocated group */