diff options
| author | Andrew Morton <akpm@linux-foundation.org> | 2008-02-05 01:27:22 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2008-02-05 12:44:07 -0500 |
| commit | bdff746a3915f109bd13730b6847e33e17e91ed3 (patch) | |
| tree | bacc8edf83f06c4366cbb43fa21213e0a346a6f2 /kernel/fork.c | |
| parent | 59714d65dfbc86d5cb93adc5bac57a921cc2fa84 (diff) | |
clone: prepare to recycle CLONE_STOPPED
Ulrich says that we never used this clone flags and that nothing should be
using it.
As we're down to only a single bit left in clone's flags argument, let's add a
warning to check that no userspace is actually using it. Hopefully we will
be able to recycle it.
Roland said:
CLONE_STOPPED was previously used by some NTPL versions when under
thread_db (i.e. only when being actively debugged by gdb), but not for a
long time now, and it never worked reliably when it was used. Removing it
seems fine to me.
[akpm@linux-foundation.org: it looks like CLONE_DETACHED is being used]
Cc: Ulrich Drepper <drepper@redhat.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Roland McGrath <roland@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'kernel/fork.c')
| -rw-r--r-- | kernel/fork.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/kernel/fork.c b/kernel/fork.c index 05e0b6f4365..6caf4f23206 100644 --- a/kernel/fork.c +++ b/kernel/fork.c | |||
| @@ -1450,6 +1450,23 @@ long do_fork(unsigned long clone_flags, | |||
| 1450 | int trace = 0; | 1450 | int trace = 0; |
| 1451 | long nr; | 1451 | long nr; |
| 1452 | 1452 | ||
| 1453 | /* | ||
| 1454 | * We hope to recycle these flags after 2.6.26 | ||
| 1455 | */ | ||
| 1456 | if (unlikely(clone_flags & CLONE_STOPPED)) { | ||
| 1457 | static int __read_mostly count = 100; | ||
| 1458 | |||
| 1459 | if (count > 0 && printk_ratelimit()) { | ||
| 1460 | char comm[TASK_COMM_LEN]; | ||
| 1461 | |||
| 1462 | count--; | ||
| 1463 | printk(KERN_INFO "fork(): process `%s' used deprecated " | ||
| 1464 | "clone flags 0x%lx\n", | ||
| 1465 | get_task_comm(comm, current), | ||
| 1466 | clone_flags & CLONE_STOPPED); | ||
| 1467 | } | ||
| 1468 | } | ||
| 1469 | |||
| 1453 | if (unlikely(current->ptrace)) { | 1470 | if (unlikely(current->ptrace)) { |
| 1454 | trace = fork_traceflag (clone_flags); | 1471 | trace = fork_traceflag (clone_flags); |
| 1455 | if (trace) | 1472 | if (trace) |
