]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
[PATCH] Relax /proc fix a bit
authorLinus Torvalds <torvalds@osdl.org>
Sat, 15 Jul 2006 05:59:19 +0000 (05:59 +0000)
committerGreg Kroah-Hartman <gregkh@suse.de>
Sat, 15 Jul 2006 18:58:27 +0000 (11:58 -0700)
Relax /proc fix a bit

Clearign all of i_mode was a bit draconian. We only really care about
S_ISUID/ISGID, after all.

Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
fs/proc/base.c

index 5a8b89a8a46730841b2a863b4b43e5ab8f24650b..f801693f6b1452636bff3cab17963f9d231ed719 100644 (file)
@@ -1404,8 +1404,8 @@ static int pid_revalidate(struct dentry *dentry, struct nameidata *nd)
                } else {
                        inode->i_uid = 0;
                        inode->i_gid = 0;
-                       inode->i_mode = 0;
                }
+               inode->i_mode &= ~(S_ISUID | S_ISGID);
                security_task_to_inode(task, inode);
                return 1;
        }
@@ -1433,6 +1433,7 @@ static int tid_fd_revalidate(struct dentry *dentry, struct nameidata *nd)
                                inode->i_uid = 0;
                                inode->i_gid = 0;
                        }
+                       inode->i_mode &= ~(S_ISUID | S_ISGID);
                        security_task_to_inode(task, inode);
                        return 1;
                }