]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - fs/proc/base.c
Merge branch 'akpm' (patchbomb from Andrew)
[karo-tx-linux.git] / fs / proc / base.c
index 772efa45a452c75a912ec67641d06bee4cfde4bf..590aeda5af12904d664b4eaa73a2ad637b782dd6 100644 (file)
@@ -2618,6 +2618,9 @@ static void proc_flush_task_mnt(struct vfsmount *mnt, pid_t pid, pid_t tgid)
                dput(dentry);
        }
 
+       if (pid == tgid)
+               return;
+
        name.name = buf;
        name.len = snprintf(buf, sizeof(buf), "%d", tgid);
        leader = d_hash_and_lookup(mnt->mnt_root, &name);
@@ -2789,7 +2792,7 @@ retry:
 int proc_pid_readdir(struct file *file, struct dir_context *ctx)
 {
        struct tgid_iter iter;
-       struct pid_namespace *ns = file->f_dentry->d_sb->s_fs_info;
+       struct pid_namespace *ns = file_inode(file)->i_sb->s_fs_info;
        loff_t pos = ctx->pos;
 
        if (pos >= PID_MAX_LIMIT + TGID_OFFSET)
@@ -3095,7 +3098,7 @@ static int proc_task_readdir(struct file *file, struct dir_context *ctx)
        /* f_version caches the tgid value that the last readdir call couldn't
         * return. lseek aka telldir automagically resets f_version to 0.
         */
-       ns = file->f_dentry->d_sb->s_fs_info;
+       ns = inode->i_sb->s_fs_info;
        tid = (int)file->f_version;
        file->f_version = 0;
        for (task = first_tid(proc_pid(inode), tid, ctx->pos - 2, ns);