All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/1] Avoid having to provide a fake/invalid fd and path
@ 2014-03-26 15:30 xypron.glpk
  2014-03-26 18:47 ` Jan Kara
  2014-04-17 20:37 ` [PATCH 1/1] Avoid having to provide a fake/invalid fd and path Andrew Morton
  0 siblings, 2 replies; 6+ messages in thread
From: xypron.glpk @ 2014-03-26 15:30 UTC (permalink / raw)
  To: eparis
  Cc: jack, mtk.manpages, tvrtko.ursulin, linux-kernel,
	Heinrich Schuchardt

From: Heinrich Schuchardt <xypron.glpk@gmx.de>

https://lkml.org/lkml/2011/1/12/112
holds a patch by Tvrtko Ursulin

  Avoid having to provide a fake/invalid fd and path when flushing marks

  Currently for a group to flush marks it has set it needs to
  provide a fake or invalid (but resolvable) file descriptor
  and path when calling fanotify_mark. This patch pulls the
  flush handling a bit up so file descriptor and path are
  completely ignored when flushing.

Eric wrote it was applied.
https://lkml.org/lkml/2011/1/19/321

Unfortunately it is still not in the main stream code and the problem remains.

I reworked the patch to be applicable again (the signature of fanotify_mark
has changed since Tvrtko's work).

Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
---
 fs/notify/fanotify/fanotify_user.c |   17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)

diff --git a/fs/notify/fanotify/fanotify_user.c b/fs/notify/fanotify/fanotify_user.c
index 287a22c..05bb38a 100644
--- a/fs/notify/fanotify/fanotify_user.c
+++ b/fs/notify/fanotify/fanotify_user.c
@@ -856,6 +856,15 @@ SYSCALL_DEFINE5(fanotify_mark, int, fanotify_fd, unsigned int, flags,
 	    group->priority == FS_PRIO_0)
 		goto fput_and_out;
 
+	if (flags & FAN_MARK_FLUSH) {
+		ret = 0;
+		if (flags & FAN_MARK_MOUNT)
+			fsnotify_clear_vfsmount_marks_by_group(group);
+		else
+			fsnotify_clear_inode_marks_by_group(group);
+		goto fput_and_out;
+	}
+
 	ret = fanotify_find_path(dfd, pathname, &path, flags);
 	if (ret)
 		goto fput_and_out;
@@ -867,7 +876,7 @@ SYSCALL_DEFINE5(fanotify_mark, int, fanotify_fd, unsigned int, flags,
 		mnt = path.mnt;
 
 	/* create/update an inode mark */
-	switch (flags & (FAN_MARK_ADD | FAN_MARK_REMOVE | FAN_MARK_FLUSH)) {
+	switch (flags & (FAN_MARK_ADD | FAN_MARK_REMOVE)) {
 	case FAN_MARK_ADD:
 		if (flags & FAN_MARK_MOUNT)
 			ret = fanotify_add_vfsmount_mark(group, mnt, mask, flags);
@@ -880,12 +889,6 @@ SYSCALL_DEFINE5(fanotify_mark, int, fanotify_fd, unsigned int, flags,
 		else
 			ret = fanotify_remove_inode_mark(group, inode, mask, flags);
 		break;
-	case FAN_MARK_FLUSH:
-		if (flags & FAN_MARK_MOUNT)
-			fsnotify_clear_vfsmount_marks_by_group(group);
-		else
-			fsnotify_clear_inode_marks_by_group(group);
-		break;
 	default:
 		ret = -EINVAL;
 	}
-- 
1.7.10.4


^ permalink raw reply related	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2014-04-18 13:45 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-03-26 15:30 [PATCH 1/1] Avoid having to provide a fake/invalid fd and path xypron.glpk
2014-03-26 18:47 ` Jan Kara
2014-03-26 19:00   ` Eric Paris
2014-04-13 14:28     ` [PATCH 1/1] Avoid having to provide a fake/invalid fd and path (fanotify) Heinrich Schuchardt
2014-04-17 20:37 ` [PATCH 1/1] Avoid having to provide a fake/invalid fd and path Andrew Morton
2014-04-18 13:45   ` [PATCH 1/1] Avoid having to provide a fake/invalid fd and path: update manpage Heinrich Schuchardt

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.