Messages in this thread Patch in this message | | | Date | Fri, 25 Apr 2003 12:40:24 +0200 | From | Bernhard Kaindl <> | Subject | [PATCH][2.4-rc1] fix side effects of the kmod/ptrace secfix |
| |
On Fri, 25 Apr 2003, Andreas Gietl wrote: > > system monitoring stuff this way(I've even heard shutdown is affected) > > i can confirm that shutdown (halt|reboot) does not work on my 2.4.21-rc1-ac1 > boxes. (gentoo + redhat).
Thanks for the info!
> But your patch does not seem to fix it.
Very interesting also, the two liner adressed only the well-known problems. To fix the other not so well-known side effects, a real cleanup is the way to go.
Can you try the attached cleanup patch instead of the two-liner?
It's an inital cleanup and should fix the other side effects which I described in my mails.
Bernhard Kaindl
PS: If either patch is applied correctly, this
su guest -c 'ps $PPID;wc -m </proc/$PPID/cmdline'
should give:
PID TTY STAT TIME COMMAND 2452 pts/2 S 0:00 su bin -c ps $PPID;wc -m </proc/$PPID/cmdline 46
If it does not, access_process_vm is not fixed properly.
Second, calling this as root:
strace -fewrite su -c /bin/echo 2>&1 | grep pid
should give:
[pid 2599] --- SIGSTOP (Stopped (signal)) @ 0 (0) --- [pid 2599] write(1, "\n", 1
If it does not, ptrace_check_attach is not fixed properly.
(These are only the checks for the well known side effects which should be fixed even with the short is_dumpable() -> task_dumpable patch.)--- kernel/ptrace.c 2003/04/22 21:14:20 1.1 +++ kernel/ptrace.c 2003/04/25 06:21:16 1.3 @@ -21,9 +21,6 @@ */ int ptrace_check_attach(struct task_struct *child, int kill) { - mb(); - if (!is_dumpable(child)) - return -EPERM; if (!(child->ptrace & PT_PTRACED)) return -ESRCH; @@ -127,8 +124,6 @@ int access_process_vm(struct task_struct /* Worry about races with exit() */ task_lock(tsk); mm = tsk->mm; - if (!is_dumpable(tsk) || (&init_mm == mm)) - mm = NULL; if (mm) atomic_inc(&mm->mm_users); task_unlock(tsk); --- kernel/sys.c 2003/04/25 06:23:15 1.1 +++ kernel/sys.c 2003/04/25 06:23:51 @@ -1252,8 +1252,7 @@ asmlinkage long sys_prctl(int option, un error = -EINVAL; break; } - if (is_dumpable(current)) - current->mm->dumpable = arg2; + current->mm->dumpable = arg2; break; case PR_SET_UNALIGN: | |