Oleg Nesterov
fae5fa44f1
signals: fix /sbin/init protection from unwanted signals
...
The global init has a lot of long standing problems with the unhandled fatal
signals.
- The "is_global_init(current)" check in get_signal_to_deliver()
protects only the main thread. Sub-thread can dequee the fatal
signal and shutdown the whole thread group except the main thread.
If it dequeues SIGSTOP /sbin/init will be stopped, this is not
right too. Note that we can't use is_global_init(->group_leader),
this breaks exec and this can't solve other problems we have.
- Even if afterwards ignored, the fatal signals sets SIGNAL_GROUP_EXIT
on delivery. This breaks exec, has other bad implications, and this
is just wrong.
Introduce the new SIGNAL_UNKILLABLE flag to fix these problems. It also helps
to solve some other problems addressed by the subsequent patches.
Currently we use this flag for the global init only, but it could also be used
by kthreads and (perhaps) by the sub-namespace inits.
Signed-off-by: Oleg Nesterov <oleg@tv-sign.ru>
Acked-by: "Eric W. Biederman" <ebiederm@xmission.com>
Cc: Roland McGrath <roland@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2008-04-30 08:29:37 -07:00
..
irq
kernel: explicitly include required header files under kernel/
2008-04-29 08:06:04 -07:00
power
PM/gxfb: add hook to PM console layer that allows disabling of suspend VT switch
2008-04-28 08:58:36 -07:00
time
kernel: use non-racy method for proc entries creation
2008-04-29 08:06:22 -07:00
.gitignore
acct.c
audit.c
[patch 2/2] Use find_task_by_vpid in audit code
2008-04-28 06:28:30 -04:00
audit.h
[PATCH 1/2] audit: move extern declarations to audit.h
2008-04-28 06:28:04 -04:00
audit_tree.c
auditfilter.c
Merge branch 'audit.b50' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/audit-current
2008-04-29 11:41:22 -07:00
auditsc.c
[PATCH] new predicate - AUDIT_FILETYPE
2008-04-28 06:28:37 -04:00
backtracetest.c
bounds.c
Add kbuild.h that contains common definitions for kbuild users
2008-04-29 08:06:29 -07:00
capability.c
cgroup.c
cgroups: add an owner to the mm_struct
2008-04-29 08:06:10 -07:00
cgroup_debug.c
CGroup API files: move "releasable" to cgroup_debug subsystem
2008-04-29 08:06:09 -07:00
compat.c
generic: reduce stack pressure in sched_affinity
2008-04-19 19:44:59 +02:00
configs.c
kernel: use non-racy method for proc entries creation
2008-04-29 08:06:22 -07:00
cpu.c
simplify cpu_hotplug_begin()/put_online_cpus()
2008-04-29 08:06:11 -07:00
cpuset.c
Cpuset hardwall flag: add a mem_hardwall flag to cpusets
2008-04-29 08:06:11 -07:00
delayacct.c
dma.c
kernel: use non-racy method for proc entries creation
2008-04-29 08:06:22 -07:00
exec_domain.c
exit.c
signals: do_group_exit(): use signal_group_exit() more consistently
2008-04-30 08:29:33 -07:00
extable.c
fork.c
signals: microoptimize the usage of ->curr_target
2008-04-30 08:29:35 -07:00
futex.c
futex_compat.c
futex_compat __user annotation
2008-03-30 14:18:41 -07:00
hrtimer.c
hrtimer: raise softirq unlocked to avoid circular lock dependency
2008-04-28 22:22:21 +02:00
itimer.c
kallsyms.c
kernel: use non-racy method for proc entries creation
2008-04-29 08:06:22 -07:00
Kconfig.hz
Kconfig.preempt
kexec.c
vmcoreinfo: add page flags values
2008-04-28 08:58:23 -07:00
kfifo.c
kgdb.c
kgdb: always use icache flush for sw breakpoints
2008-04-17 20:05:43 +02:00
kmod.c
generic: use new set_cpus_allowed_ptr function
2008-04-19 19:44:58 +02:00
kprobes.c
kprobes: add (un)register_jprobes for batch registration
2008-04-28 08:58:32 -07:00
ksysfs.c
kthread.c
kthread: call wake_up_process() without the lock being held
2008-04-29 08:06:04 -07:00
latencytop.c
kernel: use non-racy method for proc entries creation
2008-04-29 08:06:22 -07:00
lockdep.c
lockdep_internals.h
lockdep_proc.c
kernel: use non-racy method for proc entries creation
2008-04-29 08:06:22 -07:00
Makefile
sysctl: allow embedded targets to disable sysctl_check.c
2008-04-29 08:06:22 -07:00
marker.c
kernel: explicitly include required header files under kernel/
2008-04-29 08:06:04 -07:00
module.c
kernel: Remove unnecessary inclusions of asm/semaphore.h
2008-04-18 22:17:04 -04:00
mutex-debug.c
mutex-debug.h
mutex.c
mutex.h
notifier.c
ipc: re-enable msgmni automatic recomputing msgmni if set to negative
2008-04-29 08:06:13 -07:00
ns_cgroup.c
cgroups: kernel/ns_cgroup.c should #include <linux/nsproxy.h>
2008-04-29 08:06:07 -07:00
nsproxy.c
ipc: sysvsem: refuse clone(CLONE_SYSVSEM|CLONE_NEWIPC)
2008-04-29 08:06:14 -07:00
panic.c
Taint kernel after WARN_ON(condition)
2008-04-29 08:05:59 -07:00
params.c
pid.c
pid_namespace.c
kernel: fix integer as NULL pointer warnings
2008-04-28 17:29:18 -07:00
pm_qos_params.c
posix-cpu-timers.c
posix-timers: fix shadowed variables
2008-04-17 12:22:30 +02:00
posix-timers.c
signals: join send_sigqueue() with send_group_sigqueue()
2008-04-30 08:29:36 -07:00
printk.c
isolate ratelimit from printk.c for other use
2008-04-29 08:06:06 -07:00
profile.c
kernel: use non-racy method for proc entries creation
2008-04-29 08:06:22 -07:00
ptrace.c
ptrace: conditionalize compat_ptrace_request
2008-04-28 14:14:36 -07:00
rcuclassic.c
rcupdate.c
rcupreempt.c
generic: reduce stack pressure in sched_affinity
2008-04-19 19:44:59 +02:00
rcupreempt_trace.c
rcutorture.c
kernel: explicitly include required header files under kernel/
2008-04-29 08:06:04 -07:00
relay.c
Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-block
2008-04-29 08:18:03 -07:00
res_counter.c
memcgroup: add the max_usage member on the res_counter
2008-04-29 08:06:10 -07:00
resource.c
kernel: use non-racy method for proc entries creation
2008-04-29 08:06:22 -07:00
rtmutex-debug.c
rtmutex-debug.h
rtmutex-tester.c
rtmutex.c
rtmutex.h
rtmutex_common.h
rwsem.c
sched.c
CGroups _s64 files: use read_s64/write_s64 in CFS cgroup for rt_runtime file
2008-04-29 08:06:09 -07:00
sched_debug.c
kernel: use non-racy method for proc entries creation
2008-04-29 08:06:22 -07:00
sched_fair.c
sched: debug: show a weight tree
2008-04-19 19:45:00 +02:00
sched_features.h
sched: /debug/sched_features
2008-04-19 19:45:00 +02:00
sched_idletask.c
sched_rt.c
sched: rt-group: optimize dequeue_rt_stack
2008-04-19 19:45:00 +02:00
sched_stats.h
cpumask: use new cpus_scnprintf function
2008-04-19 19:44:59 +02:00
seccomp.c
semaphore.c
Improve semaphore documentation
2008-04-17 10:43:01 -04:00
signal.c
signals: fix /sbin/init protection from unwanted signals
2008-04-30 08:29:37 -07:00
softirq.c
tasklets: execute tasklets in the same order they were queued
2008-04-19 19:44:58 +02:00
softlockup.c
spinlock.c
srcu.c
stacktrace.c
stop_machine.c
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/juhl/trivial
2008-04-21 16:36:46 -07:00
sys.c
k_getrusage: don't take rcu_read_lock()
2008-04-30 08:29:34 -07:00
sys_ni.c
sysctl.c
sysctl: add the ->permissions callback on the ctl_table_root
2008-04-29 08:06:23 -07:00
sysctl_check.c
taskstats.c
test_kprobes.c
time.c
kernel: explicitly include required header files under kernel/
2008-04-29 08:06:04 -07:00
timeconst.pl
timer.c
timers: simplify lockdep handling
2008-04-17 12:22:31 +02:00
tsacct.c
uid16.c
asmlinkage_protect replaces prevent_tail_call
2008-04-10 17:28:26 -07:00
user.c
keys: don't generate user and user session keyrings unless they're accessed
2008-04-29 08:06:17 -07:00
user_namespace.c
eCryptfs: make key module subsystem respect namespaces
2008-04-29 08:06:07 -07:00
utsname.c
kernel: explicitly include required header files under kernel/
2008-04-29 08:06:04 -07:00
utsname_sysctl.c
wait.c
workqueue.c
cleanup_workqueue_thread: remove the unneeded "cpu" parameter
2008-04-29 08:06:11 -07:00