diff options
| -rw-r--r-- | arch/alpha/mm/fault.c | 2 | ||||
| -rw-r--r-- | arch/arm/mm/fault.c | 2 | ||||
| -rw-r--r-- | arch/arm26/mm/fault.c | 2 | ||||
| -rw-r--r-- | arch/i386/lib/usercopy.c | 2 | ||||
| -rw-r--r-- | arch/i386/mm/fault.c | 2 | ||||
| -rw-r--r-- | arch/ia64/mm/fault.c | 2 | ||||
| -rw-r--r-- | arch/m32r/mm/fault.c | 2 | ||||
| -rw-r--r-- | arch/m68k/mm/fault.c | 2 | ||||
| -rw-r--r-- | arch/mips/mm/fault.c | 2 | ||||
| -rw-r--r-- | arch/powerpc/mm/fault.c | 2 | ||||
| -rw-r--r-- | arch/powerpc/platforms/pseries/ras.c | 2 | ||||
| -rw-r--r-- | arch/ppc/kernel/traps.c | 2 | ||||
| -rw-r--r-- | arch/ppc/mm/fault.c | 2 | ||||
| -rw-r--r-- | arch/s390/mm/fault.c | 2 | ||||
| -rw-r--r-- | arch/sh/mm/fault.c | 2 | ||||
| -rw-r--r-- | arch/sh64/mm/fault.c | 6 | ||||
| -rw-r--r-- | arch/um/kernel/trap.c | 2 | ||||
| -rw-r--r-- | arch/x86_64/mm/fault.c | 4 | ||||
| -rw-r--r-- | arch/xtensa/mm/fault.c | 2 | ||||
| -rw-r--r-- | drivers/char/sysrq.c | 2 | ||||
| -rw-r--r-- | include/linux/sched.h | 10 | ||||
| -rw-r--r-- | kernel/capability.c | 2 | ||||
| -rw-r--r-- | kernel/cpuset.c | 2 | ||||
| -rw-r--r-- | kernel/exit.c | 2 | ||||
| -rw-r--r-- | kernel/kexec.c | 2 | ||||
| -rw-r--r-- | kernel/ptrace.c | 1 | ||||
| -rw-r--r-- | kernel/sysctl.c | 2 | ||||
| -rw-r--r-- | mm/oom_kill.c | 2 | ||||
| -rw-r--r-- | security/commoncap.c | 2 |
29 files changed, 41 insertions, 30 deletions
diff --git a/arch/alpha/mm/fault.c b/arch/alpha/mm/fault.c index 622dabd84680..8871529a34e2 100644 --- a/arch/alpha/mm/fault.c +++ b/arch/alpha/mm/fault.c | |||
| @@ -193,7 +193,7 @@ do_page_fault(unsigned long address, unsigned long mmcsr, | |||
| 193 | /* We ran out of memory, or some other thing happened to us that | 193 | /* We ran out of memory, or some other thing happened to us that |
| 194 | made us unable to handle the page fault gracefully. */ | 194 | made us unable to handle the page fault gracefully. */ |
| 195 | out_of_memory: | 195 | out_of_memory: |
| 196 | if (current->pid == 1) { | 196 | if (is_init(current)) { |
| 197 | yield(); | 197 | yield(); |
| 198 | down_read(&mm->mmap_sem); | 198 | down_read(&mm->mmap_sem); |
| 199 | goto survive; | 199 | goto survive; |
diff --git a/arch/arm/mm/fault.c b/arch/arm/mm/fault.c index a5b33ff3924e..5e658a874498 100644 --- a/arch/arm/mm/fault.c +++ b/arch/arm/mm/fault.c | |||
| @@ -198,7 +198,7 @@ survive: | |||
| 198 | return fault; | 198 | return fault; |
| 199 | } | 199 | } |
| 200 | 200 | ||
| 201 | if (tsk->pid != 1) | 201 | if (!is_init(tsk)) |
| 202 | goto out; | 202 | goto out; |
| 203 | 203 | ||
| 204 | /* | 204 | /* |
diff --git a/arch/arm26/mm/fault.c b/arch/arm26/mm/fault.c index a7c4cc922095..a1f6d8a9cc32 100644 --- a/arch/arm26/mm/fault.c +++ b/arch/arm26/mm/fault.c | |||
| @@ -185,7 +185,7 @@ survive: | |||
| 185 | } | 185 | } |
| 186 | 186 | ||
| 187 | fault = -3; /* out of memory */ | 187 | fault = -3; /* out of memory */ |
| 188 | if (tsk->pid != 1) | 188 | if (!is_init(tsk)) |
| 189 | goto out; | 189 | goto out; |
| 190 | 190 | ||
| 191 | /* | 191 | /* |
diff --git a/arch/i386/lib/usercopy.c b/arch/i386/lib/usercopy.c index efc7e7d5f4d0..08502fc6d0cb 100644 --- a/arch/i386/lib/usercopy.c +++ b/arch/i386/lib/usercopy.c | |||
| @@ -739,7 +739,7 @@ survive: | |||
| 739 | retval = get_user_pages(current, current->mm, | 739 | retval = get_user_pages(current, current->mm, |
| 740 | (unsigned long )to, 1, 1, 0, &pg, NULL); | 740 | (unsigned long )to, 1, 1, 0, &pg, NULL); |
| 741 | 741 | ||
| 742 | if (retval == -ENOMEM && current->pid == 1) { | 742 | if (retval == -ENOMEM && is_init(current)) { |
| 743 | up_read(¤t->mm->mmap_sem); | 743 | up_read(¤t->mm->mmap_sem); |
| 744 | blk_congestion_wait(WRITE, HZ/50); | 744 | blk_congestion_wait(WRITE, HZ/50); |
| 745 | goto survive; | 745 | goto survive; |
diff --git a/arch/i386/mm/fault.c b/arch/i386/mm/fault.c index 50d8617391dd..2581575786c1 100644 --- a/arch/i386/mm/fault.c +++ b/arch/i386/mm/fault.c | |||
| @@ -589,7 +589,7 @@ no_context: | |||
| 589 | */ | 589 | */ |
| 590 | out_of_memory: | 590 | out_of_memory: |
| 591 | up_read(&mm->mmap_sem); | 591 | up_read(&mm->mmap_sem); |
| 592 | if (tsk->pid == 1) { | 592 | if (is_init(tsk)) { |
| 593 | yield(); | 593 | yield(); |
| 594 | down_read(&mm->mmap_sem); | 594 | down_read(&mm->mmap_sem); |
| 595 | goto survive; | 595 | goto survive; |
diff --git a/arch/ia64/mm/fault.c b/arch/ia64/mm/fault.c index d8b1b4ac7f26..59f3ab937615 100644 --- a/arch/ia64/mm/fault.c +++ b/arch/ia64/mm/fault.c | |||
| @@ -280,7 +280,7 @@ ia64_do_page_fault (unsigned long address, unsigned long isr, struct pt_regs *re | |||
| 280 | 280 | ||
| 281 | out_of_memory: | 281 | out_of_memory: |
| 282 | up_read(&mm->mmap_sem); | 282 | up_read(&mm->mmap_sem); |
| 283 | if (current->pid == 1) { | 283 | if (is_init(current)) { |
| 284 | yield(); | 284 | yield(); |
| 285 | down_read(&mm->mmap_sem); | 285 | down_read(&mm->mmap_sem); |
| 286 | goto survive; | 286 | goto survive; |
diff --git a/arch/m32r/mm/fault.c b/arch/m32r/mm/fault.c index dc18a33eefef..8d5f551b5754 100644 --- a/arch/m32r/mm/fault.c +++ b/arch/m32r/mm/fault.c | |||
| @@ -299,7 +299,7 @@ no_context: | |||
| 299 | */ | 299 | */ |
| 300 | out_of_memory: | 300 | out_of_memory: |
| 301 | up_read(&mm->mmap_sem); | 301 | up_read(&mm->mmap_sem); |
| 302 | if (tsk->pid == 1) { | 302 | if (is_init(tsk)) { |
| 303 | yield(); | 303 | yield(); |
| 304 | down_read(&mm->mmap_sem); | 304 | down_read(&mm->mmap_sem); |
| 305 | goto survive; | 305 | goto survive; |
diff --git a/arch/m68k/mm/fault.c b/arch/m68k/mm/fault.c index 5e2d87c10c87..911f2ce3f53e 100644 --- a/arch/m68k/mm/fault.c +++ b/arch/m68k/mm/fault.c | |||
| @@ -181,7 +181,7 @@ good_area: | |||
| 181 | */ | 181 | */ |
| 182 | out_of_memory: | 182 | out_of_memory: |
| 183 | up_read(&mm->mmap_sem); | 183 | up_read(&mm->mmap_sem); |
| 184 | if (current->pid == 1) { | 184 | if (is_init(current)) { |
| 185 | yield(); | 185 | yield(); |
| 186 | down_read(&mm->mmap_sem); | 186 | down_read(&mm->mmap_sem); |
| 187 | goto survive; | 187 | goto survive; |
diff --git a/arch/mips/mm/fault.c b/arch/mips/mm/fault.c index a4f8c45c4e8e..8423d8590779 100644 --- a/arch/mips/mm/fault.c +++ b/arch/mips/mm/fault.c | |||
| @@ -171,7 +171,7 @@ no_context: | |||
| 171 | */ | 171 | */ |
| 172 | out_of_memory: | 172 | out_of_memory: |
| 173 | up_read(&mm->mmap_sem); | 173 | up_read(&mm->mmap_sem); |
| 174 | if (tsk->pid == 1) { | 174 | if (is_init(tsk)) { |
| 175 | yield(); | 175 | yield(); |
| 176 | down_read(&mm->mmap_sem); | 176 | down_read(&mm->mmap_sem); |
| 177 | goto survive; | 177 | goto survive; |
diff --git a/arch/powerpc/mm/fault.c b/arch/powerpc/mm/fault.c index 77953f41d754..e8fa50624b70 100644 --- a/arch/powerpc/mm/fault.c +++ b/arch/powerpc/mm/fault.c | |||
| @@ -386,7 +386,7 @@ bad_area_nosemaphore: | |||
| 386 | */ | 386 | */ |
| 387 | out_of_memory: | 387 | out_of_memory: |
| 388 | up_read(&mm->mmap_sem); | 388 | up_read(&mm->mmap_sem); |
| 389 | if (current->pid == 1) { | 389 | if (is_init(current)) { |
| 390 | yield(); | 390 | yield(); |
| 391 | down_read(&mm->mmap_sem); | 391 | down_read(&mm->mmap_sem); |
| 392 | goto survive; | 392 | goto survive; |
diff --git a/arch/powerpc/platforms/pseries/ras.c b/arch/powerpc/platforms/pseries/ras.c index 903115d67fdc..311ed1993fc0 100644 --- a/arch/powerpc/platforms/pseries/ras.c +++ b/arch/powerpc/platforms/pseries/ras.c | |||
| @@ -337,7 +337,7 @@ static int recover_mce(struct pt_regs *regs, struct rtas_error_log * err) | |||
| 337 | err->disposition == RTAS_DISP_NOT_RECOVERED && | 337 | err->disposition == RTAS_DISP_NOT_RECOVERED && |
| 338 | err->target == RTAS_TARGET_MEMORY && | 338 | err->target == RTAS_TARGET_MEMORY && |
| 339 | err->type == RTAS_TYPE_ECC_UNCORR && | 339 | err->type == RTAS_TYPE_ECC_UNCORR && |
| 340 | !(current->pid == 0 || current->pid == 1)) { | 340 | !(current->pid == 0 || is_init(current))) { |
| 341 | /* Kill off a user process with an ECC error */ | 341 | /* Kill off a user process with an ECC error */ |
| 342 | printk(KERN_ERR "MCE: uncorrectable ecc error for pid %d\n", | 342 | printk(KERN_ERR "MCE: uncorrectable ecc error for pid %d\n", |
| 343 | current->pid); | 343 | current->pid); |
diff --git a/arch/ppc/kernel/traps.c b/arch/ppc/kernel/traps.c index d7a433049b48..aafc8e8893d1 100644 --- a/arch/ppc/kernel/traps.c +++ b/arch/ppc/kernel/traps.c | |||
| @@ -119,7 +119,7 @@ void _exception(int signr, struct pt_regs *regs, int code, unsigned long addr) | |||
| 119 | * generate the same exception over and over again and we get | 119 | * generate the same exception over and over again and we get |
| 120 | * nowhere. Better to kill it and let the kernel panic. | 120 | * nowhere. Better to kill it and let the kernel panic. |
| 121 | */ | 121 | */ |
| 122 | if (current->pid == 1) { | 122 | if (is_init(current)) { |
| 123 | __sighandler_t handler; | 123 | __sighandler_t handler; |
| 124 | 124 | ||
| 125 | spin_lock_irq(¤t->sighand->siglock); | 125 | spin_lock_irq(¤t->sighand->siglock); |
diff --git a/arch/ppc/mm/fault.c b/arch/ppc/mm/fault.c index bc776beb3136..465f451f3bc3 100644 --- a/arch/ppc/mm/fault.c +++ b/arch/ppc/mm/fault.c | |||
| @@ -291,7 +291,7 @@ bad_area: | |||
| 291 | */ | 291 | */ |
| 292 | out_of_memory: | 292 | out_of_memory: |
| 293 | up_read(&mm->mmap_sem); | 293 | up_read(&mm->mmap_sem); |
| 294 | if (current->pid == 1) { | 294 | if (is_init(current)) { |
| 295 | yield(); | 295 | yield(); |
| 296 | down_read(&mm->mmap_sem); | 296 | down_read(&mm->mmap_sem); |
| 297 | goto survive; | 297 | goto survive; |
diff --git a/arch/s390/mm/fault.c b/arch/s390/mm/fault.c index f2b9a84dc2bf..9c3c19fe62fc 100644 --- a/arch/s390/mm/fault.c +++ b/arch/s390/mm/fault.c | |||
| @@ -353,7 +353,7 @@ no_context: | |||
| 353 | */ | 353 | */ |
| 354 | out_of_memory: | 354 | out_of_memory: |
| 355 | up_read(&mm->mmap_sem); | 355 | up_read(&mm->mmap_sem); |
| 356 | if (tsk->pid == 1) { | 356 | if (is_init(tsk)) { |
| 357 | yield(); | 357 | yield(); |
| 358 | down_read(&mm->mmap_sem); | 358 | down_read(&mm->mmap_sem); |
| 359 | goto survive; | 359 | goto survive; |
diff --git a/arch/sh/mm/fault.c b/arch/sh/mm/fault.c index 507f28914706..68663b8f99ae 100644 --- a/arch/sh/mm/fault.c +++ b/arch/sh/mm/fault.c | |||
| @@ -149,7 +149,7 @@ no_context: | |||
| 149 | */ | 149 | */ |
| 150 | out_of_memory: | 150 | out_of_memory: |
| 151 | up_read(&mm->mmap_sem); | 151 | up_read(&mm->mmap_sem); |
| 152 | if (current->pid == 1) { | 152 | if (is_init(current)) { |
| 153 | yield(); | 153 | yield(); |
| 154 | down_read(&mm->mmap_sem); | 154 | down_read(&mm->mmap_sem); |
| 155 | goto survive; | 155 | goto survive; |
diff --git a/arch/sh64/mm/fault.c b/arch/sh64/mm/fault.c index f08d0eaf6497..8e2f6c28b739 100644 --- a/arch/sh64/mm/fault.c +++ b/arch/sh64/mm/fault.c | |||
| @@ -277,7 +277,7 @@ bad_area: | |||
| 277 | show_regs(regs); | 277 | show_regs(regs); |
| 278 | #endif | 278 | #endif |
| 279 | } | 279 | } |
| 280 | if (tsk->pid == 1) { | 280 | if (is_init(tsk)) { |
| 281 | panic("INIT had user mode bad_area\n"); | 281 | panic("INIT had user mode bad_area\n"); |
| 282 | } | 282 | } |
| 283 | tsk->thread.address = address; | 283 | tsk->thread.address = address; |
| @@ -319,14 +319,14 @@ no_context: | |||
| 319 | * us unable to handle the page fault gracefully. | 319 | * us unable to handle the page fault gracefully. |
| 320 | */ | 320 | */ |
| 321 | out_of_memory: | 321 | out_of_memory: |
| 322 | if (current->pid == 1) { | 322 | if (is_init(current)) { |
| 323 | panic("INIT out of memory\n"); | 323 | panic("INIT out of memory\n"); |
| 324 | yield(); | 324 | yield(); |
| 325 | goto survive; | 325 | goto survive; |
| 326 | } | 326 | } |
| 327 | printk("fault:Out of memory\n"); | 327 | printk("fault:Out of memory\n"); |
| 328 | up_read(&mm->mmap_sem); | 328 | up_read(&mm->mmap_sem); |
| 329 | if (current->pid == 1) { | 329 | if (is_init(current)) { |
| 330 | yield(); | 330 | yield(); |
| 331 | down_read(&mm->mmap_sem); | 331 | down_read(&mm->mmap_sem); |
| 332 | goto survive; | 332 | goto survive; |
diff --git a/arch/um/kernel/trap.c b/arch/um/kernel/trap.c index 61a23fff4395..c7b195c7e51f 100644 --- a/arch/um/kernel/trap.c +++ b/arch/um/kernel/trap.c | |||
| @@ -120,7 +120,7 @@ out_nosemaphore: | |||
| 120 | * us unable to handle the page fault gracefully. | 120 | * us unable to handle the page fault gracefully. |
| 121 | */ | 121 | */ |
| 122 | out_of_memory: | 122 | out_of_memory: |
| 123 | if (current->pid == 1) { | 123 | if (is_init(current)) { |
| 124 | up_read(&mm->mmap_sem); | 124 | up_read(&mm->mmap_sem); |
| 125 | yield(); | 125 | yield(); |
| 126 | down_read(&mm->mmap_sem); | 126 | down_read(&mm->mmap_sem); |
diff --git a/arch/x86_64/mm/fault.c b/arch/x86_64/mm/fault.c index 9ba54cc2b5f6..3751b4788e28 100644 --- a/arch/x86_64/mm/fault.c +++ b/arch/x86_64/mm/fault.c | |||
| @@ -244,7 +244,7 @@ static int is_errata93(struct pt_regs *regs, unsigned long address) | |||
| 244 | 244 | ||
| 245 | int unhandled_signal(struct task_struct *tsk, int sig) | 245 | int unhandled_signal(struct task_struct *tsk, int sig) |
| 246 | { | 246 | { |
| 247 | if (tsk->pid == 1) | 247 | if (is_init(tsk)) |
| 248 | return 1; | 248 | return 1; |
| 249 | if (tsk->ptrace & PT_PTRACED) | 249 | if (tsk->ptrace & PT_PTRACED) |
| 250 | return 0; | 250 | return 0; |
| @@ -580,7 +580,7 @@ no_context: | |||
| 580 | */ | 580 | */ |
| 581 | out_of_memory: | 581 | out_of_memory: |
| 582 | up_read(&mm->mmap_sem); | 582 | up_read(&mm->mmap_sem); |
| 583 | if (current->pid == 1) { | 583 | if (is_init(current)) { |
| 584 | yield(); | 584 | yield(); |
| 585 | goto again; | 585 | goto again; |
| 586 | } | 586 | } |
diff --git a/arch/xtensa/mm/fault.c b/arch/xtensa/mm/fault.c index a945a33e85a1..dd0dbec2e57e 100644 --- a/arch/xtensa/mm/fault.c +++ b/arch/xtensa/mm/fault.c | |||
| @@ -144,7 +144,7 @@ bad_area: | |||
| 144 | */ | 144 | */ |
| 145 | out_of_memory: | 145 | out_of_memory: |
| 146 | up_read(&mm->mmap_sem); | 146 | up_read(&mm->mmap_sem); |
| 147 | if (current->pid == 1) { | 147 | if (is_init(current)) { |
| 148 | yield(); | 148 | yield(); |
| 149 | down_read(&mm->mmap_sem); | 149 | down_read(&mm->mmap_sem); |
| 150 | goto survive; | 150 | goto survive; |
diff --git a/drivers/char/sysrq.c b/drivers/char/sysrq.c index ee3ca8f1768e..0ad6cb081db4 100644 --- a/drivers/char/sysrq.c +++ b/drivers/char/sysrq.c | |||
| @@ -208,7 +208,7 @@ static void send_sig_all(int sig) | |||
| 208 | struct task_struct *p; | 208 | struct task_struct *p; |
| 209 | 209 | ||
| 210 | for_each_process(p) { | 210 | for_each_process(p) { |
| 211 | if (p->mm && p->pid != 1) | 211 | if (p->mm && !is_init(p)) |
| 212 | /* Not swapper, init nor kernel thread */ | 212 | /* Not swapper, init nor kernel thread */ |
| 213 | force_sig(sig, p); | 213 | force_sig(sig, p); |
| 214 | } | 214 | } |
diff --git a/include/linux/sched.h b/include/linux/sched.h index 3696f2f7126d..ed2af8671589 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h | |||
| @@ -1033,6 +1033,16 @@ static inline int pid_alive(struct task_struct *p) | |||
| 1033 | return p->pids[PIDTYPE_PID].pid != NULL; | 1033 | return p->pids[PIDTYPE_PID].pid != NULL; |
| 1034 | } | 1034 | } |
| 1035 | 1035 | ||
| 1036 | /** | ||
| 1037 | * is_init - check if a task structure is the first user space | ||
| 1038 | * task the kernel created. | ||
| 1039 | * @p: Task structure to be checked. | ||
| 1040 | */ | ||
| 1041 | static inline int is_init(struct task_struct *tsk) | ||
| 1042 | { | ||
| 1043 | return tsk->pid == 1; | ||
| 1044 | } | ||
| 1045 | |||
| 1036 | extern void free_task(struct task_struct *tsk); | 1046 | extern void free_task(struct task_struct *tsk); |
| 1037 | #define get_task_struct(tsk) do { atomic_inc(&(tsk)->usage); } while(0) | 1047 | #define get_task_struct(tsk) do { atomic_inc(&(tsk)->usage); } while(0) |
| 1038 | 1048 | ||
diff --git a/kernel/capability.c b/kernel/capability.c index c7685ad00a97..edb845a6e84a 100644 --- a/kernel/capability.c +++ b/kernel/capability.c | |||
| @@ -133,7 +133,7 @@ static inline int cap_set_all(kernel_cap_t *effective, | |||
| 133 | int found = 0; | 133 | int found = 0; |
| 134 | 134 | ||
| 135 | do_each_thread(g, target) { | 135 | do_each_thread(g, target) { |
| 136 | if (target == current || target->pid == 1) | 136 | if (target == current || is_init(target)) |
| 137 | continue; | 137 | continue; |
| 138 | found = 1; | 138 | found = 1; |
| 139 | if (security_capset_check(target, effective, inheritable, | 139 | if (security_capset_check(target, effective, inheritable, |
diff --git a/kernel/cpuset.c b/kernel/cpuset.c index 1b32c2c04c15..584bb4e6c042 100644 --- a/kernel/cpuset.c +++ b/kernel/cpuset.c | |||
| @@ -240,7 +240,7 @@ static struct super_block *cpuset_sb; | |||
| 240 | * A cpuset can only be deleted if both its 'count' of using tasks | 240 | * A cpuset can only be deleted if both its 'count' of using tasks |
| 241 | * is zero, and its list of 'children' cpusets is empty. Since all | 241 | * is zero, and its list of 'children' cpusets is empty. Since all |
| 242 | * tasks in the system use _some_ cpuset, and since there is always at | 242 | * tasks in the system use _some_ cpuset, and since there is always at |
| 243 | * least one task in the system (init, pid == 1), therefore, top_cpuset | 243 | * least one task in the system (init), therefore, top_cpuset |
| 244 | * always has either children cpusets and/or using tasks. So we don't | 244 | * always has either children cpusets and/or using tasks. So we don't |
| 245 | * need a special hack to ensure that top_cpuset cannot be deleted. | 245 | * need a special hack to ensure that top_cpuset cannot be deleted. |
| 246 | * | 246 | * |
diff --git a/kernel/exit.c b/kernel/exit.c index 4b6fb054b25d..9961192d6055 100644 --- a/kernel/exit.c +++ b/kernel/exit.c | |||
| @@ -219,7 +219,7 @@ static int will_become_orphaned_pgrp(int pgrp, struct task_struct *ignored_task) | |||
| 219 | do_each_task_pid(pgrp, PIDTYPE_PGID, p) { | 219 | do_each_task_pid(pgrp, PIDTYPE_PGID, p) { |
| 220 | if (p == ignored_task | 220 | if (p == ignored_task |
| 221 | || p->exit_state | 221 | || p->exit_state |
| 222 | || p->real_parent->pid == 1) | 222 | || is_init(p->real_parent)) |
| 223 | continue; | 223 | continue; |
| 224 | if (process_group(p->real_parent) != pgrp | 224 | if (process_group(p->real_parent) != pgrp |
| 225 | && p->real_parent->signal->session == p->signal->session) { | 225 | && p->real_parent->signal->session == p->signal->session) { |
diff --git a/kernel/kexec.c b/kernel/kexec.c index 50087ecf337e..37cad75cf494 100644 --- a/kernel/kexec.c +++ b/kernel/kexec.c | |||
| @@ -40,7 +40,7 @@ struct resource crashk_res = { | |||
| 40 | 40 | ||
| 41 | int kexec_should_crash(struct task_struct *p) | 41 | int kexec_should_crash(struct task_struct *p) |
| 42 | { | 42 | { |
| 43 | if (in_interrupt() || !p->pid || p->pid == 1 || panic_on_oops) | 43 | if (in_interrupt() || !p->pid || is_init(p) || panic_on_oops) |
| 44 | return 1; | 44 | return 1; |
| 45 | return 0; | 45 | return 0; |
| 46 | } | 46 | } |
diff --git a/kernel/ptrace.c b/kernel/ptrace.c index 8aad0331d82e..4d50e06fd745 100644 --- a/kernel/ptrace.c +++ b/kernel/ptrace.c | |||
| @@ -440,6 +440,7 @@ struct task_struct *ptrace_get_task_struct(pid_t pid) | |||
| 440 | child = find_task_by_pid(pid); | 440 | child = find_task_by_pid(pid); |
| 441 | if (child) | 441 | if (child) |
| 442 | get_task_struct(child); | 442 | get_task_struct(child); |
| 443 | |||
| 443 | read_unlock(&tasklist_lock); | 444 | read_unlock(&tasklist_lock); |
| 444 | if (!child) | 445 | if (!child) |
| 445 | return ERR_PTR(-ESRCH); | 446 | return ERR_PTR(-ESRCH); |
diff --git a/kernel/sysctl.c b/kernel/sysctl.c index 8bfa7d117c54..9535a3839930 100644 --- a/kernel/sysctl.c +++ b/kernel/sysctl.c | |||
| @@ -1915,7 +1915,7 @@ int proc_dointvec_bset(ctl_table *table, int write, struct file *filp, | |||
| 1915 | return -EPERM; | 1915 | return -EPERM; |
| 1916 | } | 1916 | } |
| 1917 | 1917 | ||
| 1918 | op = (current->pid == 1) ? OP_SET : OP_AND; | 1918 | op = is_init(current) ? OP_SET : OP_AND; |
| 1919 | return do_proc_dointvec(table,write,filp,buffer,lenp,ppos, | 1919 | return do_proc_dointvec(table,write,filp,buffer,lenp,ppos, |
| 1920 | do_proc_dointvec_bset_conv,&op); | 1920 | do_proc_dointvec_bset_conv,&op); |
| 1921 | } | 1921 | } |
diff --git a/mm/oom_kill.c b/mm/oom_kill.c index bada3d03119f..f3dd79c1c367 100644 --- a/mm/oom_kill.c +++ b/mm/oom_kill.c | |||
| @@ -255,7 +255,7 @@ static struct task_struct *select_bad_process(unsigned long *ppoints) | |||
| 255 | */ | 255 | */ |
| 256 | static void __oom_kill_task(struct task_struct *p, const char *message) | 256 | static void __oom_kill_task(struct task_struct *p, const char *message) |
| 257 | { | 257 | { |
| 258 | if (p->pid == 1) { | 258 | if (is_init(p)) { |
| 259 | WARN_ON(1); | 259 | WARN_ON(1); |
| 260 | printk(KERN_WARNING "tried to kill init!\n"); | 260 | printk(KERN_WARNING "tried to kill init!\n"); |
| 261 | return; | 261 | return; |
diff --git a/security/commoncap.c b/security/commoncap.c index f50fc298cf80..5a5ef5ca7ea9 100644 --- a/security/commoncap.c +++ b/security/commoncap.c | |||
| @@ -169,7 +169,7 @@ void cap_bprm_apply_creds (struct linux_binprm *bprm, int unsafe) | |||
| 169 | /* For init, we want to retain the capabilities set | 169 | /* For init, we want to retain the capabilities set |
| 170 | * in the init_task struct. Thus we skip the usual | 170 | * in the init_task struct. Thus we skip the usual |
| 171 | * capability rules */ | 171 | * capability rules */ |
| 172 | if (current->pid != 1) { | 172 | if (!is_init(current)) { |
| 173 | current->cap_permitted = new_permitted; | 173 | current->cap_permitted = new_permitted; |
| 174 | current->cap_effective = | 174 | current->cap_effective = |
| 175 | cap_intersect (new_permitted, bprm->cap_effective); | 175 | cap_intersect (new_permitted, bprm->cap_effective); |
