aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric W. Biederman <ebiederm@xmission.com>2006-06-26 03:25:40 -0400
committerLinus Torvalds <torvalds@g5.osdl.org>2006-06-26 12:58:23 -0400
commit5634708b5fce807bdf2091cfafc2fb24d791f0c8 (patch)
treedc383be7cd284c9364d90147bdea981b3d9cb5d4
parentf05e15b59467d97c30fbffed80db9e00b73d640b (diff)
[PATCH] proc: Fix the .. inode number on /proc/<pid>/fd
Signed-off-by: Eric W. Biederman <ebiederm@xmission.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-rw-r--r--fs/proc/base.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/fs/proc/base.c b/fs/proc/base.c
index c4a1ff371b8d..13e3ab99eb74 100644
--- a/fs/proc/base.c
+++ b/fs/proc/base.c
@@ -1196,7 +1196,8 @@ static struct inode_operations proc_pid_link_inode_operations = {
1196 1196
1197static int proc_readfd(struct file * filp, void * dirent, filldir_t filldir) 1197static int proc_readfd(struct file * filp, void * dirent, filldir_t filldir)
1198{ 1198{
1199 struct inode *inode = filp->f_dentry->d_inode; 1199 struct dentry *dentry = filp->f_dentry;
1200 struct inode *inode = dentry->d_inode;
1200 struct task_struct *p = proc_task(inode); 1201 struct task_struct *p = proc_task(inode);
1201 unsigned int fd, tid, ino; 1202 unsigned int fd, tid, ino;
1202 int retval; 1203 int retval;
@@ -1217,7 +1218,7 @@ static int proc_readfd(struct file * filp, void * dirent, filldir_t filldir)
1217 goto out; 1218 goto out;
1218 filp->f_pos++; 1219 filp->f_pos++;
1219 case 1: 1220 case 1:
1220 ino = fake_ino(tid, PROC_TID_INO); 1221 ino = parent_ino(dentry);
1221 if (filldir(dirent, "..", 2, 1, ino, DT_DIR) < 0) 1222 if (filldir(dirent, "..", 2, 1, ino, DT_DIR) < 0)
1222 goto out; 1223 goto out;
1223 filp->f_pos++; 1224 filp->f_pos++;