summaryrefslogtreecommitdiff
path: root/fs/proc/array.c
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2015-07-27 14:43:29 +0200
committerTakashi Iwai <tiwai@suse.de>2015-07-27 14:43:29 +0200
commit527c465a3c8716d93201ae34b7fc52679610596d (patch)
treee436b076df094caba9809b9c622374d396e84435 /fs/proc/array.c
parentfbce23a0b95763dfc4961ce6240e055c39f497ed (diff)
parent5ce000b297a1c1bb126a14b02acb40318b88a903 (diff)
Merge branch 'for-linus' into for-next
... to make easier developing HDA ext code.
Diffstat (limited to 'fs/proc/array.c')
-rw-r--r--fs/proc/array.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/fs/proc/array.c b/fs/proc/array.c
index fd02a9ebfc30..ce065cf3104f 100644
--- a/fs/proc/array.c
+++ b/fs/proc/array.c
@@ -126,6 +126,14 @@ static inline const char *get_task_state(struct task_struct *tsk)
{
unsigned int state = (tsk->state | tsk->exit_state) & TASK_REPORT;
+ /*
+ * Parked tasks do not run; they sit in __kthread_parkme().
+ * Without this check, we would report them as running, which is
+ * clearly wrong, so we report them as sleeping instead.
+ */
+ if (tsk->state == TASK_PARKED)
+ state = TASK_INTERRUPTIBLE;
+
BUILD_BUG_ON(1 + ilog2(TASK_REPORT) != ARRAY_SIZE(task_state_array)-1);
return task_state_array[fls(state)];
@@ -569,7 +577,7 @@ int proc_pid_statm(struct seq_file *m, struct pid_namespace *ns,
return 0;
}
-#ifdef CONFIG_CHECKPOINT_RESTORE
+#ifdef CONFIG_PROC_CHILDREN
static struct pid *
get_children_pid(struct inode *inode, struct pid *pid_prev, loff_t pos)
{
@@ -692,4 +700,4 @@ const struct file_operations proc_tid_children_operations = {
.llseek = seq_lseek,
.release = children_seq_release,
};
-#endif /* CONFIG_CHECKPOINT_RESTORE */
+#endif /* CONFIG_PROC_CHILDREN */