diff options
author | Takashi Iwai <tiwai@suse.de> | 2015-07-27 14:43:29 +0200 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2015-07-27 14:43:29 +0200 |
commit | 527c465a3c8716d93201ae34b7fc52679610596d (patch) | |
tree | e436b076df094caba9809b9c622374d396e84435 /fs/proc/array.c | |
parent | fbce23a0b95763dfc4961ce6240e055c39f497ed (diff) | |
parent | 5ce000b297a1c1bb126a14b02acb40318b88a903 (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.c | 12 |
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 */ |