All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] set sigio target to current->pid and only if not already set
@ 2003-10-09  1:52 Jamie Lokier
  0 siblings, 0 replies; only message in thread
From: Jamie Lokier @ 2003-10-09  1:52 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-kernel

Patch: f_setown-2.6.0-test6.patch

Dear Linus,

Two minor changes:

1. send_sigio() sends to a specific thread, _not_ a process.
   (It can also send to a process group, but that's not relevant here).
   This is useful, and should stay as it is.

   Therefore it makes _no sense_ to call f_setown() with current->tgid.
   Presently the kernel is inconsistent about it, with some places using
   current->pid and some others using current->tgid.

   This patch changes f_setown() calls to use current->pid.

2. In some places, f_setown() is called not at the user's direct request,
   but as a side effect of another function.  Specifically: dnotify and
   file leases.

   It is good to allow a program the flexibility to specify a different
   pid than the default, using F_SETOWN.  Presently they can do this after
   the dnotify or lease call, but there is a small time window when it
   will be temporarily set to current->tgid (which as pointed out above,
   is not always right).

   The window is avoidable if the program can use F_SETOWN prior to the
   dnotify or lease call.  This is exactly what the "force" argument to
   f_setown() is for, and this patch changes it to zero in those callers.

   This change is not likely to affect any existing programs.

Please apply.

-- Jamie

diff -urN --exclude-from=dontdiff orig-2.6.0-test6/fs/dnotify.c f_setown-2.6.0-test6/fs/dnotify.c
--- orig-2.6.0-test6/fs/dnotify.c	2003-09-13 21:21:25.000000000 +0100
+++ f_setown-2.6.0-test6/fs/dnotify.c	2003-10-09 01:49:13.000000000 +0100
@@ -92,7 +92,7 @@
 		prev = &odn->dn_next;
 	}
 
-	error = f_setown(filp, current->tgid, 1);
+	error = f_setown(filp, current->pid, 0);
 	if (error)
 		goto out_free;
 
diff -urN --exclude-from=dontdiff orig-2.6.0-test6/fs/locks.c f_setown-2.6.0-test6/fs/locks.c
--- orig-2.6.0-test6/fs/locks.c	2003-09-30 05:40:50.000000000 +0100
+++ f_setown-2.6.0-test6/fs/locks.c	2003-10-09 01:49:37.000000000 +0100
@@ -1268,7 +1268,7 @@
 
 	locks_insert_lock(before, fl);
 
-	error = f_setown(filp, current->tgid, 1);
+	error = f_setown(filp, current->pid, 0);
 out_unlock:
 	unlock_kernel();
 	return error;
diff -urN --exclude-from=dontdiff orig-2.6.0-test6/kernel/futex.c f_setown-2.6.0-test6/kernel/futex.c
--- orig-2.6.0-test6/kernel/futex.c	2003-09-30 05:41:14.000000000 +0100
+++ f_setown-2.6.0-test6/kernel/futex.c	2003-10-09 01:52:37.000000000 +0100
@@ -500,7 +500,7 @@
 
 	if (signal) {
 		int err;
-		err = f_setown(filp, current->tgid, 1);
+		err = f_setown(filp, current->pid, 1);
 		if (err < 0) {
 			put_unused_fd(ret);
 			put_filp(filp);

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2003-10-09  1:52 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2003-10-09  1:52 [PATCH] set sigio target to current->pid and only if not already set Jamie Lokier

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.