diff options
author | Jeff Garzik <jeff@garzik.org> | 2007-02-02 08:31:55 -0500 |
---|---|---|
committer | Jeff Garzik <jeff@garzik.org> | 2007-02-02 08:31:55 -0500 |
commit | ae2c27a78f1df5b0967069cd3b916cff1eb044c8 (patch) | |
tree | e67f1012e76185bac2e78bb04caa68ed1f7dc2a2 /fs | |
parent | a608ab9cb6a5050394498b2520c6e7c162f4e2cf (diff) | |
parent | e34efe3b100d0fbdf053128956c3dd0bc68754d6 (diff) | |
download | op-kernel-dev-ae2c27a78f1df5b0967069cd3b916cff1eb044c8.zip op-kernel-dev-ae2c27a78f1df5b0967069cd3b916cff1eb044c8.tar.gz |
Merge ../linux-2.6
Diffstat (limited to 'fs')
-rw-r--r-- | fs/nfsd/nfsfh.c | 2 | ||||
-rw-r--r-- | fs/proc/base.c | 12 |
2 files changed, 12 insertions, 2 deletions
diff --git a/fs/nfsd/nfsfh.c b/fs/nfsd/nfsfh.c index 98338a5..c59d6fb 100644 --- a/fs/nfsd/nfsfh.c +++ b/fs/nfsd/nfsfh.c @@ -269,7 +269,7 @@ fh_verify(struct svc_rqst *rqstp, struct svc_fh *fhp, int type, int access) "acc=%x, error=%d\n", dentry->d_parent->d_name.name, dentry->d_name.name, - access, (error >> 24)); + access, ntohl(error)); } out: if (exp && !IS_ERR(exp)) diff --git a/fs/proc/base.c b/fs/proc/base.c index ff7a668..1a979ea 100644 --- a/fs/proc/base.c +++ b/fs/proc/base.c @@ -2328,13 +2328,23 @@ static int proc_task_readdir(struct file * filp, void * dirent, filldir_t filldi { struct dentry *dentry = filp->f_path.dentry; struct inode *inode = dentry->d_inode; - struct task_struct *leader = get_proc_task(inode); + struct task_struct *leader = NULL; struct task_struct *task; int retval = -ENOENT; ino_t ino; int tid; unsigned long pos = filp->f_pos; /* avoiding "long long" filp->f_pos */ + task = get_proc_task(inode); + if (!task) + goto out_no_task; + rcu_read_lock(); + if (pid_alive(task)) { + leader = task->group_leader; + get_task_struct(leader); + } + rcu_read_unlock(); + put_task_struct(task); if (!leader) goto out_no_task; retval = 0; |