|
@@ -2834,6 +2834,15 @@ static int proc_pid_personality(struct seq_file *m, struct pid_namespace *ns,
|
|
|
return err;
|
|
|
}
|
|
|
|
|
|
+#ifdef CONFIG_LIVEPATCH
|
|
|
+static int proc_pid_patch_state(struct seq_file *m, struct pid_namespace *ns,
|
|
|
+ struct pid *pid, struct task_struct *task)
|
|
|
+{
|
|
|
+ seq_printf(m, "%d\n", task->patch_state);
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+#endif /* CONFIG_LIVEPATCH */
|
|
|
+
|
|
|
/*
|
|
|
* Thread groups
|
|
|
*/
|
|
@@ -2933,6 +2942,9 @@ static const struct pid_entry tgid_base_stuff[] = {
|
|
|
REG("timers", S_IRUGO, proc_timers_operations),
|
|
|
#endif
|
|
|
REG("timerslack_ns", S_IRUGO|S_IWUGO, proc_pid_set_timerslack_ns_operations),
|
|
|
+#ifdef CONFIG_LIVEPATCH
|
|
|
+ ONE("patch_state", S_IRUSR, proc_pid_patch_state),
|
|
|
+#endif
|
|
|
};
|
|
|
|
|
|
static int proc_tgid_base_readdir(struct file *file, struct dir_context *ctx)
|
|
@@ -3315,6 +3327,9 @@ static const struct pid_entry tid_base_stuff[] = {
|
|
|
REG("projid_map", S_IRUGO|S_IWUSR, proc_projid_map_operations),
|
|
|
REG("setgroups", S_IRUGO|S_IWUSR, proc_setgroups_operations),
|
|
|
#endif
|
|
|
+#ifdef CONFIG_LIVEPATCH
|
|
|
+ ONE("patch_state", S_IRUSR, proc_pid_patch_state),
|
|
|
+#endif
|
|
|
};
|
|
|
|
|
|
static int proc_tid_base_readdir(struct file *file, struct dir_context *ctx)
|