Thread (22 messages) 22 messages, 5 authors, 2014-07-17

Re: Re: [PATCH v5 2/2] [BUGFIX] kprobes: Fix "Failed to find blacklist" error on ia64 and ppc64

From: Michael Ellerman <mpe@ellerman.id.au>
Date: 2014-07-15 03:16:44
Also in: lkml

On Tue, 2014-07-15 at 11:24 +0900, Masami Hiramatsu wrote:
(2014/07/15 11:11), Michael Ellerman wrote:
quoted
On Mon, 2014-07-14 at 10:17 -0700, Tony Luck wrote:
quoted
On Tue, Jul 8, 2014 at 5:07 AM, Masami Hiramatsu
[off-list ref] wrote:
quoted
Ping?

This patch can be applied without 1/2, and will fix ia64/ppc64 problem.
Is somebody going to push this upstream? Another week has gone by,
we are at -rc5, and I'm still seeing the

  Failed to find blacklist a00000010133b150

messages on ia64.
I don't see those messages on ppc64, I don't know where the original report
that it was broken on ppc64 came from. So I'm a bit lukewarm on the patch.
Right, on ppc64(ABIv1) it may be silently failed. Because each function
descriptor has another entry on kallsyms, original code can't detect
that. 
OK, that would have been good to know :)

It's actually much worse than you describe. On ppc64 (ABIv1) we are
successfully blacklisting the function descriptors. But that doesn't prevent
you from probing the text address. So basically NOKPROBE_SYMBOL() does nothing
useful for us.

$ head -2 ../kprobes/blacklist 
0xc000000000d4cff8-0xc000000000d4d010	notify_die
0xc000000000d4cf80-0xc000000000d4cf98	atomic_notifier_call_chain
$ echo "p:atomic_notifier_call_chain .atomic_notifier_call_chain" > kprobe_events
$ echo 1 > events/kprobes/enable 
$ ls
available_events      instances       saved_cmdlines       trace_options
available_tracers     kprobe_events   saved_cmdlines_size  trace_pipe
buffer_size_kb        kprobe_profile  set_event            tracing_cpumask
buffer_total_size_kb  options         snapshot             tracing_max_latency
current_tracer        per_cpu         trace                tracing_on
events                printk_formats  trace_clock          tracing_thresh
free_buffer           README          trace_marker
$ Dumping ftrace buffer:
cpu 0x2: Vector: 400 (Instruction Access) at [c0000001defaf830]
    pc: 0000000000000000
    lr: 0000000000000001
    sp: c0000001defafab0
   msr: 8000000140009032
  current = 0xc0000001def57e40
  paca    = 0xc00000000fe00800	 softe: 0	 irq_happened: 0x01
    pid   = 1, comm = swapper/2
cpu 0x3: Vector: 400 (Instruction Access) at [c0000001ddbcc640]
    pc: 0000000000000000
    lr: 0000000000000000
    sp: c0000001ddbcc8c0
   msr: 8000000040001032
  current = 0xc0000001def5a100
  paca    = 0xc00000000fe00c00	 softe: 0	 irq_happened: 0x01
    pid   = -554326528, comm = 

Dead machine.


With your patch:

$ head -2 kprobes/blacklist 
0xc0000000000bf860-0xc0000000000bf8b0	.notify_die
0xc0000000000bf750-0xc0000000000bf780	.atomic_notifier_call_chain

$ echo "p:notify_die .notify_die" > tracing/kprobe_events
-bash: echo: write error: Invalid argument

So that is much better.

cheers
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help