Re: [PATCH 3/8] livepatch: Add atomic replace

From: Petr Mladek
Date: Tue Apr 10 2018 - 05:31:58 EST


On Mon 2018-04-09 15:53:03, Miroslav Benes wrote:
> > > + * 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.

I am fine with the rename. I was confused by "new_func" several times
in the past. "new_addr" makes it clear that we are setting an address in
compare with the name in "old_name".


> 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).

Yup.

Best Regards,
Petr