[PATCH] reject taskset for kernel threads

From: Olaf Hering
Date: Wed Mar 21 2007 - 16:54:11 EST



Do not allow taskset for kernel threads.
These commands will cause oopses due to stack corruption:

ls /proc/*/task | grep -v ^/ | xargs echo | xargs -n1 taskset -pc 2-9
taskset -pc 1 $$
taskset -pc 0 $((pidof john))

Possible fix in userland:

for i in ` ls /proc/*/task | grep -v ^/ `
do
e=/proc/*/task/$i/exe
if test -e $e
then
taskset -pc 2-9 $i
fi
done


Signed-off-by: Olaf Hering <olaf@xxxxxxxxx>

---
kernel/sched.c | 2 ++
1 file changed, 2 insertions(+)

Index: linux-2.6.20/kernel/sched.c
===================================================================
--- linux-2.6.20.orig/kernel/sched.c
+++ linux-2.6.20/kernel/sched.c
@@ -4310,6 +4310,8 @@ long sched_setaffinity(pid_t pid, cpumas
read_unlock(&tasklist_lock);

retval = -EPERM;
+ if (!p->mm)
+ goto out_unlock;
if ((current->euid != p->euid) && (current->euid != p->uid) &&
!capable(CAP_SYS_NICE))
goto out_unlock;
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/