]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
check_unsafe_exec() doesn't care about signal handlers sharing
authorAl Viro <viro@zeniv.linux.org.uk>
Mon, 30 Mar 2009 11:35:18 +0000 (07:35 -0400)
committerGreg Kroah-Hartman <gregkh@suse.de>
Fri, 8 May 2009 22:45:08 +0000 (15:45 -0700)
commit f1191b50ec11c8e2ca766d6d99eb5bb9d2c084a3 upstream.

... since we'll unshare sighand anyway

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
fs/exec.c

index b55a1f8195dc98b8e467bf0da73b329aaec0f8f4..d1d2b8da3fc0e58e2cc4dd07dd18297c4eefdbb6 100644 (file)
--- a/fs/exec.c
+++ b/fs/exec.c
@@ -1053,23 +1053,20 @@ int check_unsafe_exec(struct linux_binprm *bprm)
 {
        struct task_struct *p = current, *t;
        unsigned long flags;
-       unsigned n_fs, n_sighand;
+       unsigned n_fs;
        int res = 0;
 
        bprm->unsafe = tracehook_unsafe_exec(p);
 
        n_fs = 1;
-       n_sighand = 1;
        write_lock(&p->fs->lock);
        lock_task_sighand(p, &flags);
        for (t = next_thread(p); t != p; t = next_thread(t)) {
                if (t->fs == p->fs)
                        n_fs++;
-               n_sighand++;
        }
 
-       if (p->fs->users > n_fs ||
-           atomic_read(&p->sighand->count) > n_sighand) {
+       if (p->fs->users > n_fs) {
                bprm->unsafe |= LSM_UNSAFE_SHARE;
        } else {
                if (p->fs->in_exec)