[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <1288028746.3673.11.camel@laptop>
Date: Mon, 25 Oct 2010 19:45:46 +0200
From: Peter Zijlstra <peterz@...radead.org>
To: Ingo Molnar <mingo@...e.hu>
Cc: Steven Rostedt <rostedt@...dmis.org>,
Jason Baron <jbaron@...hat.com>,
LKML <linux-kernel@...r.kernel.org>,
Andrew Morton <akpm@...ux-foundation.org>,
Frederic Weisbecker <fweisbec@...il.com>,
Thomas Gleixner <tglx@...utronix.de>,
"H. Peter Anvin" <hpa@...or.com>,
Arnaldo Carvalho de Melo <acme@...hat.com>,
masami.hiramatsu.pt@...achi.com
Subject: Re: [PATCH][GIT PULL] tracing: Fix compile issue for
trace_sched_wakeup.c
On Mon, 2010-10-25 at 17:47 +0200, Peter Zijlstra wrote:
> NOP'ed vs JMP'ed
>
> 56: 6a 00 push $0x0 6a 00 push $0x0
> 58: e8 b7 fe ff ff call 0xffffff14 e8 b7 fe ff ff call 0xffffff14
> 5d: 8b 43 1c mov 0x1c(%ebx),%eax 8b 43 1c mov 0x1c(%ebx),%eax
> 60: 89 44 24 04 mov %eax,0x4(%esp) 89 44 24 04 mov %eax,0x4(%esp)
> 64: f0 fe 07 lock incb (%edi) f0 fe 07 lock incb (%edi)
> 67:* 0f 1f 44 00 00 nopl 0x0(%eax,%eax,1) e9 03 00 00 00 jmp 0x6f <--- PATCHED INSN
> 6c: 58 pop %eax 58 pop %eax
> 6d: eb 1d jmp 0x8c eb 1d jmp 0x8c
> 6f: 8b 35 70 ad 40 c1 mov 0xc140ad70,%esi 8b 35 70 ad 40 c1 mov 0xc140ad70,%esi
> 75: 85 f6 test %esi,%esi 85 f6 test %esi,%esi
> 77: 74 13 je 0x8c 74 13 je 0x8c
> 79: 8b 46 04 mov 0x4(%esi),%eax 8b 46 04 mov 0x4(%esi),%eax
> 7c: 89 da mov %ebx,%edx 89 da mov %ebx,%edx
> 7e: 8b 4c 24 04 mov 0x4(%esp),%ecx 8b 4c 24 04 mov 0x4(%esp),%ecx
> 82: ff 16 call *(%esi) ff 16 call *(%esi)
> 84: 83 c6 08 add $0x8,%esi 83 c6 08 add $0x8,%esi
> 87: 83 3e 00 cmpl $0x0,(%esi) 83 3e 00 cmpl $0x0,(%esi)
> 8a: eb eb jmp 0x77 eb eb jmp 0x77
> 8c: 89 d8 mov %ebx,%eax 89 d8 mov %ebx,%eax
> 8e: ff 14 24 call *(%esp) ff 14 24 call *(%esp)
OK, new theory..
56 pushl 0
67 nopl jmp 0x6f
popl
jmp 0x8c
6f mov
test
je 0x8c
8c mov
call *(%esp)
So in the jumped path we miss a popl which pop's the 0 pushed before,
which is the exact address call is failing on..
Looks like gcc got its branches confused or something..
Am I reading this right?
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists