[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v3 6/9] livepatch: Add parsing for the symbol+0x<offset>/<len>
On Mon, Aug 15, 2016 at 04:53:48AM -0600, Jan Beulich wrote: > >>> On 14.08.16 at 23:52, <konrad.wilk@xxxxxxxxxx> wrote: > > in case we want to patch at specific offsets inside > > a function. (for example if we want to do NOP patching). > > > > We also assume that the 'len' is only the size of > > an isns that would be for a call opcode (so 5 bytes > > on x86, and 4 on ARM 32/64). > > Which makes the notation using a slash quite confusing: Normally > if we see <symbol>+<offset>/<length> the length part is assumed > to be the overall size of the object/function the name refers to. Oh, I somehow had the length of instruction on my mind. > Could I talk you into using a different separator, like colon or > semicolon? Of course. Whatever is easier to folks. I can also ditch the <length> part altogether? > > > --- a/xen/common/livepatch.c > > +++ b/xen/common/livepatch.c > > @@ -234,14 +234,46 @@ static const char *livepatch_symbols_lookup(unsigned > > long addr, > > > > static int lookup_symbol(struct livepatch_func *f, struct livepatch_elf > > *elf) > > { > > + const char *s; > > + char *plus = NULL, *slash = NULL; > > Pointless initializers, afaict. Also the latter can be const. > > > + unsigned long offset = 0; > > + > > if ( f->old_addr ) > > return 0; > > > > + s = f->name; > > + /* +<offset>/<len> */ > > + plus = strchr(f->name, '+'); > > + if ( plus ) > > + { > > + slash = strchr(plus, '/'); > > + > > + if ( slash ) > > + { > > + const char *endp = NULL; > > + unsigned int len; > > + > > + offset = simple_strtoul(plus+1, &endp, 16); > > Missing blanks around +. > > > + if ( endp != slash ) > > + return -EINVAL; > > + > > + len = simple_strtoul(slash+1, NULL, 16); > > Would you perhaps want to be even more precise and verify that > nothing follows this number? /me nods. > > Jan > _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |