Switch proc interfaces in kernel/ to %pK
PATCH 1/1 Switch proc interfaces in kernel/ to %pK
Switch users of %p in /proc interfaces in kernel/ to %pK, to allow configuring the level of exposure of kernel pointers via the kptr_restrict sysctl.
--- kernel/cgroup.c | 2 +- kernel/kprobes.c | 4 ++-- kernel/lockdep_proc.c | 10 +++++----- kernel/time/timer_stats.c | 2 +- 4 files changed, 9 insertions(+), 9 deletions(-)
kernel/cgroup.c +1 -1
@@ -4894,7 +4894,7 @@ static int cgroup_css_links_read(struct cgroup *cont,struct css_set *cg = link->cg;struct task_struct *task;int count =0 ; -seq_printf (seq,"css_set %p\n" , cg); +seq_printf (seq,"css_set %pK\n" , cg);list_for_each_entry (task, &cg->tasks, cg_list) {if (count++ >MAX_TASKS_SHOWN_PER_CSS ) {seq_puts (seq," ...\n" );
kernel/kprobes.c +2 -2
@@ -2021,11 +2021,11 @@ static void __kprobes report_probe(struct seq_file *pi, struct kprobe *p, kprobe_type ="k" ;if (sym) -seq_printf (pi,"%p %s %s+0x%x %s " , +seq_printf (pi,"%pK %s %s+0x%x %s " , p->addr, kprobe_type, sym, offset, (modname ? modname :" " ));else -seq_printf (pi,"%p %s %p " , +seq_printf (pi,"%pK %s %pK " , p->addr, kprobe_type, p->addr);if (!pp)
kernel/lockdep_proc.c +5 -5
@@ -65,7 +65,7 @@ static int l_show(struct seq_file *m, void *v)return 0 ; } -seq_printf (m,"%p" , class->key); +seq_printf (m,"%pK" , class->key);#ifdef CONFIG_DEBUG_LOCKDEP seq_printf (m," OPS:%8ld" , class->ops);#endif
@@ -83,7 +83,7 @@ static int l_show(struct seq_file *m, void *v)list_for_each_entry (entry, &class->locks_after, entry) {if (entry->distance ==1 ) { -seq_printf (m," -> [%p] " , entry->class->key); +seq_printf (m," -> [%pK] " , entry->class->key);print_name (m, entry->class);seq_puts (m,"\n" ); }
@@ -152,7 +152,7 @@ static int lc_show(struct seq_file *m, void *v)if (!class->key)continue ; -seq_printf (m,"[%p] " , class->key); +seq_printf (m,"[%pK] " , class->key);print_name (m, class);seq_puts (m,"\n" ); }
@@ -502,7 +502,7 @@ static void seq_stats(struct seq_file *m, struct lock_stat_data *data)if (!i)seq_line (m,'-' ,40 -namelen, namelen); -snprintf (ip,sizeof (ip),"[<%p>]" , +snprintf (ip,sizeof (ip),"[<%pK>]" , (void *)class->contention_point[i]); seq_printf(m, "%40s %14lu %29s %pS\n", name, stats->contention_point[i],
@@ -517,7 +517,7 @@ static void seq_stats(struct seq_file *m, struct lock_stat_data *data)if (!i)seq_line (m,'-' ,40 -namelen, namelen); -snprintf (ip,sizeof (ip),"[<%p>]" , +snprintf (ip,sizeof (ip),"[<%pK>]" , (void *)class->contending_point[i]); seq_printf(m, "%40s %14lu %29s %pS\n", name, stats->contending_point[i],
kernel/time/timer_stats.c +1 -1
@@ -272,7 +272,7 @@ static void print_name_offset(struct seq_file *m, unsigned long addr)char symname[KSYM_NAME_LEN ];if (lookup_symbol_name (addr, symname) <0 ) -seq_printf (m,"<%p>" , (void *)addr); +seq_printf (m,"<%pK>" , (void *)addr);else seq_printf (m,"%s" , symname); }
Quoted 5 lines · Dan Rosenberg
Switch users of %p in /proc interfaces in
kernel/to %pK, to allow configuring the level of exposure of kernel pointers via thekptr_restrictsysctl.Signed-off-by Dan Rosenberg <[email protected]>
(for cgroup.c)
Quoted 103 lines
---
kernel/cgroup.c | 2 +-
kernel/kprobes.c | 4 ++--
kernel/lockdep_proc.c | 10 +++++-----
kernel/time/timer_stats.c | 2 +-4 files changed, 9 insertions(+), 9 deletions(-)kernel/cgroup.c +1
-1@@ -4894,7 +4894,7 @@ static int cgroup_css_links_read(struct cgroup *cont, struct css_set *cg = link->cg; struct task_struct *task; int count = 0; - seq_printf(seq, "css_set %p\n", cg); + seq_printf(seq, "css_set %pK\n", cg); list_for_each_entry(task, &cg->tasks, cg_list) { if (count++ > MAX_TASKS_SHOWN_PER_CSS) { seq_puts(seq, " ...\n");kernel/kprobes.c +1
-1@@ -2021,11 +2021,11 @@ static void __kprobes report_probe(struct seq_file *pi, struct kprobe *p, kprobe_type = "k"; if (sym) - seq_printf(pi, "%p %s %s+0x%x %s ", + seq_printf(pi, "%pK %s %s+0x%x %s ", p->addr, kprobe_type, sym, offset, (modname ? modname : " "));else
- seq_printf(pi, "%p %s %p ",
+seq_printf(pi, "%pK %s %pK ", p->addr, kprobe_type, p->addr);if (!pp)
kernel/lockdep_proc.c +5
-5@@ -65,7 +65,7 @@ static int l_show(struct seq_file *m, void *v) return 0; } - seq_printf(m, "%p", class->key); + seq_printf(m, "%pK", class->key); #ifdef CONFIG_DEBUG_LOCKDEP seq_printf(m, " OPS:%8ld", class->ops); #endif@@ -83,7 +83,7 @@ static int l_show(struct seq_file *m, void *v) list_for_each_entry(entry, &class->locks_after, entry) { if (entry->distance == 1) { - seq_printf(m, " -> [%p] ", entry->class->key); + seq_printf(m, " -> [%pK] ", entry->class->key); print_name(m, entry->class); seq_puts(m, "\n"); }@@ -152,7 +152,7 @@ static int lc_show(struct seq_file *m, void *v) if (!class->key) continue; - seq_printf(m, "[%p] ", class->key); + seq_printf(m, "[%pK] ", class->key); print_name(m, class); seq_puts(m, "\n"); }@@ -502,7 +502,7 @@ static void seq_stats(struct seq_file *m, struct lock_stat_data *data) if (!i) seq_line(m, '-', 40-namelen, namelen); - snprintf(ip, sizeof(ip), "[<%p>]", + snprintf(ip, sizeof(ip), "[<%pK>]", (void *)class->contention_point[i]); seq_printf(m, "%40s %14lu %29s %pS\n", name, stats->contention_point[i],@@ -517,7 +517,7 @@ static void seq_stats(struct seq_file *m, struct lock_stat_data *data) if (!i) seq_line(m, '-', 40-namelen, namelen); - snprintf(ip, sizeof(ip), "[<%p>]", + snprintf(ip, sizeof(ip), "[<%pK>]", (void *)class->contending_point[i]); seq_printf(m, "%40s %14lu %29s %pS\n", name, stats->contending_point[i],kernel/time/timer_stats.c +1
-1@@ -272,7 +272,7 @@ static void print_name_offset(struct seq_file *m, unsigned long addr) char symname[KSYM_NAME_LEN]; if (lookup_symbol_name(addr, symname) < 0) - seq_printf(m, "<%p>", (void *)addr); + seq_printf(m, "<%pK>", (void *)addr);else
seq_printf(m, "%s", symname);
}
kernel/lockdep_proc.c
Quoted 6 lines · Dan Rosenberg
Switch users of %p in /proc interfaces in
kernel/to %pK, to allow configuring the level of exposure of kernel pointers via thekptr_restrictsysctl.kernel/lockdep_proc.c +0
-0
/proc/lockdep is r--------/proc/lockdep_chains is r--------/proc/lock_stat is rw-------
Is this supposed to mean something?
Quoted 5 lines · Alexey Dobriyan
Quoted 3 lines · Dan Rosenberg
Switch users of %p in /proc interfaces in
kernel/to %pK, to allow configuring the level of exposure of kernel pointers via thekptr_restrictsysctl.
Quoted 8 lines
kernel/lockdep_proc.c
Quoted 2 lines
kernel/lockdep_proc.c +0
-0
/proc/lockdepis r--------/proc/lockdep_chainsis r--------/proc/lock_statis rw-------Is this supposed to mean something?
It's certainly not a priority to switch these particular interfaces over since they aren't exposed to unprivileged users. However, when kptr_restrict is set to 2, kernel pointers aren't exposed at all, even to root. Changing to %pK will certainly have no negative effect with the default setting of 1 (hide when the reader does not have CAP_SYSLOG).
Let me know if you're opposed and I can re-send a version that doesn't touch these files.
Quoted 3 lines · Dan Rosenberg
Switch users of %p in /proc interfaces in
kernel/to %pK, to allow configuring the level of exposure of kernel pointers via thekptr_restrictsysctl.
This report_probe interface is at /sys/kernel/debug/kprobes/list. Is that policy applied to debugfs interface (for debug) too?
# in that case, you might update ftrace and perf tracing interfaces...
Quoted 18 lines
kernel/kprobes.c +2
-2@@ -2021,11 +2021,11 @@ static void __kprobes report_probe(struct seq_file *pi, struct kprobe *p, kprobe_type ="k" ;if (sym) -seq_printf (pi,"%p %s %s+0x%x %s " , +seq_printf (pi,"%pK %s %s+0x%x %s " , p->addr, kprobe_type, sym, offset, (modname ? modname :" " ));else -seq_printf (pi,"%p %s %p " , +seq_printf (pi,"%pK %s %pK " , p->addr, kprobe_type, p->addr);if (!pp)
Signature · 4 lines
Masami HIRAMATSU 2nd Dept. Linux Technology Center Hitachi, Ltd., Systems Development Laboratory E-mail: [email protected]
Quoted 9 lines · Masami Hiramatsu
Quoted 3 lines · Dan Rosenberg
Switch users of %p in /proc interfaces in
kernel/to %pK, to allow configuring the level of exposure of kernel pointers via thekptr_restrictsysctl.This
report_probeinterface is at/sys/kernel/debug/kprobes/list. Is that policy applied to debugfs interface (for debug) too?# in that case, you might update ftrace and perf tracing interfaces...
There's no reason to not update ftrace and perf too, since I'd assume no one is using debugging interfaces without root privileges anyway. I'll add them to my list.
Quoted 25 lines
Quoted 18 lines
kernel/kprobes.c +2
-2@@ -2021,11 +2021,11 @@ static void __kprobes report_probe(struct seq_file *pi, struct kprobe *p, kprobe_type ="k" ;if (sym) -seq_printf (pi,"%p %s %s+0x%x %s " , +seq_printf (pi,"%pK %s %s+0x%x %s " , p->addr, kprobe_type, sym, offset, (modname ? modname :" " ));else -seq_printf (pi,"%p %s %p " , +seq_printf (pi,"%pK %s %pK " , p->addr, kprobe_type, p->addr);if (!pp)Signature · 4 lines
Masami HIRAMATSU 2nd Dept. Linux Technology Center Hitachi, Ltd., Systems Development Laboratory E-mail: [email protected]
Masami Hiramatsu
Acked-byQuoted 6 lines · Dan Rosenberg
Quoted 5 lines · Masami Hiramatsu
Quoted 3 lines · Dan Rosenberg
Switch users of %p in /proc interfaces in
kernel/to %pK, to allow configuring the level of exposure of kernel pointers via thekptr_restrictsysctl.
Quoted 8 lines
Quoted 4 lines
This
report_probeinterface is at/sys/kernel/debug/kprobes/list. Is that policy applied to debugfs interface (for debug) too?# in that case, you might update ftrace and perf tracing interfaces...There's no reason to not update ftrace and perf too, since I'd assume no one is using debugging interfaces without root privileges anyway. I'll add them to my list.
OK, I see.
Quoted 27 lines
Quoted 25 lines
Quoted 18 lines
kernel/kprobes.c +2
-2@@ -2021,11 +2021,11 @@ static void __kprobes report_probe(struct seq_file *pi, struct kprobe *p, kprobe_type ="k" ;if (sym) -seq_printf (pi,"%p %s %s+0x%x %s " , +seq_printf (pi,"%pK %s %s+0x%x %s " , p->addr, kprobe_type, sym, offset, (modname ? modname :" " ));else -seq_printf (pi,"%p %s %p " , +seq_printf (pi,"%pK %s %pK " , p->addr, kprobe_type, p->addr);if (!pp)Signature · 4 lines
Masami HIRAMATSU 2nd Dept. Linux Technology Center Hitachi, Ltd., Systems Development Laboratory E-mail: [email protected]
Signature · 4 lines
Masami HIRAMATSU 2nd Dept. Linux Technology Center Hitachi, Ltd., Systems Development Laboratory E-mail: [email protected]