From: Linus Torvalds Date: Sat, 15 Jul 2006 04:48:03 +0000 (-0700) Subject: Relax /proc fix a bit X-Git-Tag: v2.6.18-rc2~79 X-Git-Url: https://openfabrics.org/gitweb/?a=commitdiff_plain;h=9ee8ab9fbf21e6b87ad227cd46c0a4be41ab749b;p=~shefty%2Frdma-dev.git 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 --- diff --git a/fs/proc/base.c b/fs/proc/base.c index 0cb8f20d000..474eae34506 100644 --- a/fs/proc/base.c +++ b/fs/proc/base.c @@ -1338,8 +1338,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); put_task_struct(task); return 1; @@ -1390,6 +1390,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); put_task_struct(task); return 1;