aboutsummaryrefslogtreecommitdiffstats
path: root/fs/proc/base.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@g5.osdl.org>2006-07-15 00:48:03 -0400
committerLinus Torvalds <torvalds@g5.osdl.org>2006-07-15 00:48:03 -0400
commit9ee8ab9fbf21e6b87ad227cd46c0a4be41ab749b (patch)
tree148cf933d20fdf79096b71d03552c1c511c2db13 /fs/proc/base.c
parent18b0bbd8ca6d3cb90425aa0d77b99a762c6d6de3 (diff)
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>
Diffstat (limited to 'fs/proc/base.c')
-rw-r--r--fs/proc/base.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/fs/proc/base.c b/fs/proc/base.c
index 0cb8f20d000c..474eae345068 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)
1338 } else { 1338 } else {
1339 inode->i_uid = 0; 1339 inode->i_uid = 0;
1340 inode->i_gid = 0; 1340 inode->i_gid = 0;
1341 inode->i_mode = 0;
1342 } 1341 }
1342 inode->i_mode &= ~(S_ISUID | S_ISGID);
1343 security_task_to_inode(task, inode); 1343 security_task_to_inode(task, inode);
1344 put_task_struct(task); 1344 put_task_struct(task);
1345 return 1; 1345 return 1;
@@ -1390,6 +1390,7 @@ static int tid_fd_revalidate(struct dentry *dentry, struct nameidata *nd)
1390 inode->i_uid = 0; 1390 inode->i_uid = 0;
1391 inode->i_gid = 0; 1391 inode->i_gid = 0;
1392 } 1392 }
1393 inode->i_mode &= ~(S_ISUID | S_ISGID);
1393 security_task_to_inode(task, inode); 1394 security_task_to_inode(task, inode);
1394 put_task_struct(task); 1395 put_task_struct(task);
1395 return 1; 1396 return 1;