lkml.org 
[lkml]   [2019]   [May]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [RFC][PATCH 1/2] x86: Allow breakpoints to emulate call functions
On Mon, 6 May 2019 21:04:16 -0400
Steven Rostedt <rostedt@goodmis.org> wrote:

> static int add_breakpoints(struct dyn_ftrace *rec, int enable)
> {
> unsigned long ftrace_addr;
> int ret;
>
> ftrace_addr = ftrace_get_addr_curr(rec);
>
> ret = ftrace_test_record(rec, enable);
>
> switch (ret) {
> case FTRACE_UPDATE_IGNORE:
> return 0;
>
> case FTRACE_UPDATE_MAKE_CALL:
> /* converting nop to call */
> return add_brk_on_nop(rec);
>
> case FTRACE_UPDATE_MODIFY_CALL:

The FTRACE_UPDATE_MODIFY_CALL is the case where we switch from calling
one trampoline to calling another. As you can plainly see from this
switch statement, we treat it the same as converting to a nop. That's
the bug we are trying to fix. It shouldn't be treated as a nop. It
should be treated as a call to the old or new function. Either is fine,
but it must be one or the other, not a nop.

-- Steve


> case FTRACE_UPDATE_MAKE_NOP:
> /* converting a call to a nop */
> return add_brk_on_call(rec, ftrace_addr);
> }
> return 0;
> }

\
 
 \ /
  Last update: 2019-05-07 03:36    [W:1.945 / U:0.004 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site