[Patch][RFC] fcntl: add ability to stop monitored processes

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hey there!
	I've recently developed this patch in pursuit of an ability to trap
proceses making modifcations to monitored directories, and I thought It would be
a nice feature to add to the mainline kernel.  It basically adds a flag to the
F_NOTIFY fcntl which optionally sends a SIGSTOP to the process making the
flagged modifications to the monitored directories, and passes the pid of the
stopped process to the monitoring process.  I've tested it, and it works quite
well for me.  Looking for comments/approvial/incorporation.

Thanks and Regards
Neil

Signed-off-by: Neil Horman <[email protected]>

 fs/dnotify.c          |    2 ++
 fs/fcntl.c            |    1 +
 include/linux/fcntl.h |    1 +
 3 files changed, 4 insertions(+)


--- linux-2.6/include/linux/fcntl.h.orig	2005-06-10 16:04:48.000000000 -0400
+++ linux-2.6/include/linux/fcntl.h	2005-06-10 16:02:16.000000000 -0400
@@ -21,6 +21,7 @@
 #define DN_DELETE	0x00000008	/* File removed */
 #define DN_RENAME	0x00000010	/* File renamed */
 #define DN_ATTRIB	0x00000020	/* File changed attibutes */
+#define DN_STOPSND	0x40000000	/* Send a SIGSTOP to the sender */
 #define DN_MULTISHOT	0x80000000	/* Don't remove notifier */
 
 #ifdef __KERNEL__
--- linux-2.6/fs/dnotify.c.orig	2005-05-04 21:47:58.000000000 -0400
+++ linux-2.6/fs/dnotify.c	2005-06-10 16:02:16.000000000 -0400
@@ -138,6 +138,8 @@ void __inode_dir_notify(struct inode *in
 			changed = 1;
 			kmem_cache_free(dn_cache, dn);
 		}
+		if (dn->dn_mask & DN_STOPSND)
+			send_sig(SIGSTOP,current,1);
 	}
 	if (changed)
 		redo_inode_mask(inode);
--- linux-2.6/fs/fcntl.c.orig	2005-05-04 21:47:58.000000000 -0400
+++ linux-2.6/fs/fcntl.c	2005-06-10 16:05:17.000000000 -0400
@@ -438,6 +438,7 @@ static void send_sigio_to_task(struct ta
 			else
 				si.si_band = band_table[reason - POLL_IN];
 			si.si_fd    = fd;
+			si.si_pid   = current->pid;
 			if (!send_group_sig_info(fown->signum, &si, p))
 				break;
 		/* fall-through: fall back on the old plain SIGIO signal */
-- 
/***************************************************
 *Neil Horman
 *Software Engineer
 *Red Hat, Inc.
 *[email protected]
 *gpg keyid: 1024D / 0x92A74FA1
 *http://pgp.mit.edu
 ***************************************************/

Attachment: pgp9kvs7fS0Wf.pgp
Description: PGP signature


[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux