aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fs/proc/base.c10
1 files changed, 3 insertions, 7 deletions
diff --git a/fs/proc/base.c b/fs/proc/base.c
index 69bb70351b9b..5bc587049b37 100644
--- a/fs/proc/base.c
+++ b/fs/proc/base.c
@@ -2604,9 +2604,6 @@ static void proc_flush_task_mnt(struct vfsmount *mnt, pid_t pid, pid_t tgid)
2604 dput(dentry); 2604 dput(dentry);
2605 } 2605 }
2606 2606
2607 if (tgid == 0)
2608 goto out;
2609
2610 name.name = buf; 2607 name.name = buf;
2611 name.len = snprintf(buf, sizeof(buf), "%d", tgid); 2608 name.len = snprintf(buf, sizeof(buf), "%d", tgid);
2612 leader = d_hash_and_lookup(mnt->mnt_root, &name); 2609 leader = d_hash_and_lookup(mnt->mnt_root, &name);
@@ -2663,17 +2660,16 @@ out:
2663void proc_flush_task(struct task_struct *task) 2660void proc_flush_task(struct task_struct *task)
2664{ 2661{
2665 int i; 2662 int i;
2666 struct pid *pid, *tgid = NULL; 2663 struct pid *pid, *tgid;
2667 struct upid *upid; 2664 struct upid *upid;
2668 2665
2669 pid = task_pid(task); 2666 pid = task_pid(task);
2670 if (thread_group_leader(task)) 2667 tgid = task_tgid(task);
2671 tgid = task_tgid(task);
2672 2668
2673 for (i = 0; i <= pid->level; i++) { 2669 for (i = 0; i <= pid->level; i++) {
2674 upid = &pid->numbers[i]; 2670 upid = &pid->numbers[i];
2675 proc_flush_task_mnt(upid->ns->proc_mnt, upid->nr, 2671 proc_flush_task_mnt(upid->ns->proc_mnt, upid->nr,
2676 tgid ? tgid->numbers[i].nr : 0); 2672 tgid->numbers[i].nr);
2677 } 2673 }
2678 2674
2679 upid = &pid->numbers[pid->level]; 2675 upid = &pid->numbers[pid->level];