> > +    * see klp_init_object_loaded().
> > +    */
> > +   if (!func->new_func && !func->nop)
> >             return -EINVAL;
> 
> >  
> >     INIT_LIST_HEAD(&func->stack_node);
> > @@ -742,6 +920,9 @@ static int klp_init_object_loaded(struct klp_patch 
> > *patch,
> >                     return -ENOENT;
> >             }
> >  
> > +           if (func->nop)
> > +                   func->new_func = (void *)func->old_addr;
> > +
> 
> These changes make it more obvious that 'new_func' isn't quite the right
> name.  It should really be 'new_addr' IMO.

I think we wanted to point out the difference from old_addr which is 
initialized with the symbol name while new_func is initialized with the 
new function itself (function pointer). I agree though that it looks 
awkward in this context and I'm not against changing it to new_addr.

Petr, could you also add a note to the changelog why we need to setup 
new_func for nop functions, please? It's not obvious because of the hack 
in klp_ftrace_handler() 
(klp_cancel_transition()->...->klp_check_stack_func() needs it).

Miroslav

Reply via email to