diff options
Diffstat (limited to 'fs/proc/array.c')
| -rw-r--r-- | fs/proc/array.c | 48 | 
1 files changed, 30 insertions, 18 deletions
| diff --git a/fs/proc/array.c b/fs/proc/array.c index bb1d3619ca12..004077f1a7bf 100644 --- a/fs/proc/array.c +++ b/fs/proc/array.c @@ -85,6 +85,7 @@  #include <linux/delayacct.h>  #include <linux/seq_file.h>  #include <linux/pid_namespace.h> +#include <linux/prctl.h>  #include <linux/ptrace.h>  #include <linux/tracehook.h>  #include <linux/string_helpers.h> @@ -342,6 +343,30 @@ static inline void task_seccomp(struct seq_file *m, struct task_struct *p)  #ifdef CONFIG_SECCOMP  	seq_put_decimal_ull(m, "\nSeccomp:\t", p->seccomp.mode);  #endif +	seq_printf(m, "\nSpeculation_Store_Bypass:\t"); +	switch (arch_prctl_spec_ctrl_get(p, PR_SPEC_STORE_BYPASS)) { +	case -EINVAL: +		seq_printf(m, "unknown"); +		break; +	case PR_SPEC_NOT_AFFECTED: +		seq_printf(m, "not vulnerable"); +		break; +	case PR_SPEC_PRCTL | PR_SPEC_FORCE_DISABLE: +		seq_printf(m, "thread force mitigated"); +		break; +	case PR_SPEC_PRCTL | PR_SPEC_DISABLE: +		seq_printf(m, "thread mitigated"); +		break; +	case PR_SPEC_PRCTL | PR_SPEC_ENABLE: +		seq_printf(m, "thread vulnerable"); +		break; +	case PR_SPEC_DISABLE: +		seq_printf(m, "globally mitigated"); +		break; +	default: +		seq_printf(m, "vulnerable"); +		break; +	}  	seq_putc(m, '\n');  } @@ -684,25 +709,22 @@ out:  static int children_seq_show(struct seq_file *seq, void *v)  { -	struct inode *inode = seq->private; -	pid_t pid; - -	pid = pid_nr_ns(v, inode->i_sb->s_fs_info); -	seq_printf(seq, "%d ", pid); +	struct inode *inode = file_inode(seq->file); +	seq_printf(seq, "%d ", pid_nr_ns(v, proc_pid_ns(inode)));  	return 0;  }  static void *children_seq_start(struct seq_file *seq, loff_t *pos)  { -	return get_children_pid(seq->private, NULL, *pos); +	return get_children_pid(file_inode(seq->file), NULL, *pos);  }  static void *children_seq_next(struct seq_file *seq, void *v, loff_t *pos)  {  	struct pid *pid; -	pid = get_children_pid(seq->private, v, *pos + 1); +	pid = get_children_pid(file_inode(seq->file), v, *pos + 1);  	put_pid(v);  	++*pos; @@ -723,17 +745,7 @@ static const struct seq_operations children_seq_ops = {  static int children_seq_open(struct inode *inode, struct file *file)  { -	struct seq_file *m; -	int ret; - -	ret = seq_open(file, &children_seq_ops); -	if (ret) -		return ret; - -	m = file->private_data; -	m->private = inode; - -	return ret; +	return seq_open(file, &children_seq_ops);  }  const struct file_operations proc_tid_children_operations = { |