summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fs/notify/fanotify/fanotify_user.c31
1 files changed, 10 insertions, 21 deletions
diff --git a/fs/notify/fanotify/fanotify_user.c b/fs/notify/fanotify/fanotify_user.c
index cb7a0c5ff854..0f25fc20a6a7 100644
--- a/fs/notify/fanotify/fanotify_user.c
+++ b/fs/notify/fanotify/fanotify_user.c
@@ -468,26 +468,6 @@ out:
return PTR_ERR(fsn_mark);
}
-static int fanotify_update_mark(struct fsnotify_group *group,
- struct inode *inode, struct vfsmount *mnt,
- int flags, __u32 mask)
-{
- pr_debug("%s: group=%p inode=%p mnt=%p flags=%x mask=%x\n",
- __func__, group, inode, mnt, flags, mask);
-
- BUG_ON(inode && mnt);
- BUG_ON(!inode && !mnt);
-
- if (flags & FAN_MARK_ADD)
- fanotify_add_mark(group, inode, mnt, flags, mask);
- else if (flags & FAN_MARK_REMOVE)
- fanotify_remove_mark(group, inode, mnt, flags, mask);
- else
- BUG();
-
- return 0;
-}
-
static bool fanotify_mark_validate_input(int flags,
__u32 mask)
{
@@ -583,7 +563,16 @@ SYSCALL_DEFINE(fanotify_mark)(int fanotify_fd, unsigned int flags,
group = filp->private_data;
/* create/update an inode mark */
- ret = fanotify_update_mark(group, inode, NULL, flags, mask);
+ switch (flags & (FAN_MARK_ADD | FAN_MARK_REMOVE)) {
+ case FAN_MARK_ADD:
+ ret = fanotify_add_mark(group, inode, NULL, flags, mask);
+ break;
+ case FAN_MARK_REMOVE:
+ ret = fanotify_remove_mark(group, inode, NULL, flags, mask);
+ break;
+ default:
+ ret = -EINVAL;
+ }
path_put(&path);
fput_and_out: