* [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.