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); |