diff options
-rw-r--r-- | include/linux/sched.h | 3 | ||||
-rw-r--r-- | kernel/fork.c | 28 |
2 files changed, 3 insertions, 28 deletions
diff --git a/include/linux/sched.h b/include/linux/sched.h index 96e23215e276..07402530fc70 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h | |||
@@ -21,7 +21,8 @@ | |||
21 | #define CLONE_DETACHED 0x00400000 /* Unused, ignored */ | 21 | #define CLONE_DETACHED 0x00400000 /* Unused, ignored */ |
22 | #define CLONE_UNTRACED 0x00800000 /* set if the tracing process can't force CLONE_PTRACE on this clone */ | 22 | #define CLONE_UNTRACED 0x00800000 /* set if the tracing process can't force CLONE_PTRACE on this clone */ |
23 | #define CLONE_CHILD_SETTID 0x01000000 /* set the TID in the child */ | 23 | #define CLONE_CHILD_SETTID 0x01000000 /* set the TID in the child */ |
24 | #define CLONE_STOPPED 0x02000000 /* Start in stopped state */ | 24 | /* 0x02000000 was previously the unused CLONE_STOPPED (Start in stopped state) |
25 | and is now available for re-use. */ | ||
25 | #define CLONE_NEWUTS 0x04000000 /* New utsname group? */ | 26 | #define CLONE_NEWUTS 0x04000000 /* New utsname group? */ |
26 | #define CLONE_NEWIPC 0x08000000 /* New ipcs */ | 27 | #define CLONE_NEWIPC 0x08000000 /* New ipcs */ |
27 | #define CLONE_NEWUSER 0x10000000 /* New user namespace */ | 28 | #define CLONE_NEWUSER 0x10000000 /* New user namespace */ |
diff --git a/kernel/fork.c b/kernel/fork.c index d9b44f20b6b0..76a1fdd80bdf 100644 --- a/kernel/fork.c +++ b/kernel/fork.c | |||
@@ -1410,23 +1410,6 @@ long do_fork(unsigned long clone_flags, | |||
1410 | } | 1410 | } |
1411 | 1411 | ||
1412 | /* | 1412 | /* |
1413 | * We hope to recycle these flags after 2.6.26 | ||
1414 | */ | ||
1415 | if (unlikely(clone_flags & CLONE_STOPPED)) { | ||
1416 | static int __read_mostly count = 100; | ||
1417 | |||
1418 | if (count > 0 && printk_ratelimit()) { | ||
1419 | char comm[TASK_COMM_LEN]; | ||
1420 | |||
1421 | count--; | ||
1422 | printk(KERN_INFO "fork(): process `%s' used deprecated " | ||
1423 | "clone flags 0x%lx\n", | ||
1424 | get_task_comm(comm, current), | ||
1425 | clone_flags & CLONE_STOPPED); | ||
1426 | } | ||
1427 | } | ||
1428 | |||
1429 | /* | ||
1430 | * When called from kernel_thread, don't do user tracing stuff. | 1413 | * When called from kernel_thread, don't do user tracing stuff. |
1431 | */ | 1414 | */ |
1432 | if (likely(user_mode(regs))) | 1415 | if (likely(user_mode(regs))) |
@@ -1464,16 +1447,7 @@ long do_fork(unsigned long clone_flags, | |||
1464 | */ | 1447 | */ |
1465 | p->flags &= ~PF_STARTING; | 1448 | p->flags &= ~PF_STARTING; |
1466 | 1449 | ||
1467 | if (unlikely(clone_flags & CLONE_STOPPED)) { | 1450 | wake_up_new_task(p, clone_flags); |
1468 | /* | ||
1469 | * We'll start up with an immediate SIGSTOP. | ||
1470 | */ | ||
1471 | sigaddset(&p->pending.signal, SIGSTOP); | ||
1472 | set_tsk_thread_flag(p, TIF_SIGPENDING); | ||
1473 | __set_task_state(p, TASK_STOPPED); | ||
1474 | } else { | ||
1475 | wake_up_new_task(p, clone_flags); | ||
1476 | } | ||
1477 | 1451 | ||
1478 | tracehook_report_clone_complete(trace, regs, | 1452 | tracehook_report_clone_complete(trace, regs, |
1479 | clone_flags, nr, p); | 1453 | clone_flags, nr, p); |