diff options
author | Cedric Le Goater <clg@fr.ibm.com> | 2006-10-02 05:19:00 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-10-02 10:57:25 -0400 |
commit | 9ec52099e4b8678a60e9f93e41ad87885d64f3e6 (patch) | |
tree | a68fe051b39f8f8e8be469cbd3c2f653b9b71a9d /kernel/sys.c | |
parent | 1a657f78dcc8ea7c53eaa1f2a45ea2315738c15f (diff) |
[PATCH] replace cad_pid by a struct pid
There are a few places in the kernel where the init task is signaled. The
ctrl+alt+del sequence is one them. It kills a task, usually init, using a
cached pid (cad_pid).
This patch replaces the pid_t by a struct pid to avoid pid wrap around
problem. The struct pid is initialized at boot time in init() and can be
modified through systctl with
/proc/sys/kernel/cad_pid
[ I haven't found any distro using it ? ]
It also introduces a small helper routine kill_cad_pid() which is used
where it seemed ok to use cad_pid instead of pid 1.
[akpm@osdl.org: cleanups, build fix]
Signed-off-by: Cedric Le Goater <clg@fr.ibm.com>
Cc: Eric W. Biederman <ebiederm@xmission.com>
Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
Cc: Paul Mackerras <paulus@samba.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'kernel/sys.c')
-rw-r--r-- | kernel/sys.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/kernel/sys.c b/kernel/sys.c index 3a4776e8f16e..2314867ae34f 100644 --- a/kernel/sys.c +++ b/kernel/sys.c | |||
@@ -92,7 +92,8 @@ EXPORT_SYMBOL(fs_overflowgid); | |||
92 | */ | 92 | */ |
93 | 93 | ||
94 | int C_A_D = 1; | 94 | int C_A_D = 1; |
95 | int cad_pid = 1; | 95 | struct pid *cad_pid; |
96 | EXPORT_SYMBOL(cad_pid); | ||
96 | 97 | ||
97 | /* | 98 | /* |
98 | * Notifier list for kernel code which wants to be called | 99 | * Notifier list for kernel code which wants to be called |
@@ -773,10 +774,9 @@ void ctrl_alt_del(void) | |||
773 | if (C_A_D) | 774 | if (C_A_D) |
774 | schedule_work(&cad_work); | 775 | schedule_work(&cad_work); |
775 | else | 776 | else |
776 | kill_proc(cad_pid, SIGINT, 1); | 777 | kill_cad_pid(SIGINT, 1); |
777 | } | 778 | } |
778 | 779 | ||
779 | |||
780 | /* | 780 | /* |
781 | * Unprivileged users may change the real gid to the effective gid | 781 | * Unprivileged users may change the real gid to the effective gid |
782 | * or vice versa. (BSD-style) | 782 | * or vice versa. (BSD-style) |