On 02/08/2018 08:59 AM, Kees Cook wrote: > On Tue, Feb 6, 2018 at 8:34 PM, Ravi Bangoria > <ravi.bango...@linux.vnet.ibm.com> wrote: >> Simplify probes_seq_show() function. We are using %lx to display >> the offset and we don't prepend unnecessary 0s in the offset. >> >> Signed-off-by: Ravi Bangoria <ravi.bango...@linux.vnet.ibm.com> >> --- >> kernel/trace/trace_uprobe.c | 21 +++------------------ >> 1 file changed, 3 insertions(+), 18 deletions(-) >> >> diff --git a/kernel/trace/trace_uprobe.c b/kernel/trace/trace_uprobe.c >> index c2c965398893..c12a3957e1ee 100644 >> --- a/kernel/trace/trace_uprobe.c >> +++ b/kernel/trace/trace_uprobe.c >> @@ -602,24 +602,9 @@ static int probes_seq_show(struct seq_file *m, void *v) >> char c = is_ret_probe(tu) ? 'r' : 'p'; >> int i; >> >> - seq_printf(m, "%c:%s/%s", c, tu->tp.call.class->system, >> - trace_event_name(&tu->tp.call)); >> - seq_printf(m, " %s:", tu->filename); >> - >> - /* Don't print "0x (null)" when offset is 0 */ >> - if (tu->offset) { >> - seq_printf(m, "0x%lx", tu->offset); >> - } else { >> - switch (sizeof(void *)) { >> - case 4: >> - seq_printf(m, "0x00000000"); >> - break; >> - case 8: >> - default: >> - seq_printf(m, "0x0000000000000000"); >> - break; >> - } >> - } >> + seq_printf(m, "%c:%s/%s %s:0x%lx", c, tu->tp.call.class->system, >> + trace_event_name(&tu->tp.call), tu->filename, >> + tu->offset); > To keep the prepended zeros (and avoid the redundant 0x prefix): > > "...%#0*lx...", ... sizeof(void *) * 2, tu->offset); > > As in: > > + seq_printf(m, "%c:%s/%s %s:%#0*lx", c, tu->tp.call.class->system, > + trace_event_name(&tu->tp.call), tu->filename, > + sizeof(void *) * 2, tu->offset);
This is useful, thanks Kees. @Wang, Do we really need those 0s? Won't just 0x0 should suffice? Here is the sample output... # echo "p:probe_a/main /tmp/a.out:0x0" > uprobe_events Before patch: # cat uprobe_events p:probe_a/main /tmp/a.out:0x0000000000000000 After patch: # cat uprobe_events p:probe_a/main /tmp/a.out:0x0 Thanks, Ravi > -Kees > >> for (i = 0; i < tu->tp.nr_args; i++) >> seq_printf(m, " %s=%s", tu->tp.args[i].name, >> tu->tp.args[i].comm); >> -- >> 2.13.6 >> > >