[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v3 5/9] livepatch: Move code from prepare_payload to own routine
Specifically the code that is looking up f->old_addr - which can be in its own routine instead of having it part of prepare_payload. No functional change. Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx> --- Cc: Ross Lagerwall <ross.lagerwall@xxxxxxxxxx> v3: First submission. --- xen/common/livepatch.c | 43 ++++++++++++++++++++++++++----------------- 1 file changed, 26 insertions(+), 17 deletions(-) diff --git a/xen/common/livepatch.c b/xen/common/livepatch.c index 28a400f..cbfeac1 100644 --- a/xen/common/livepatch.c +++ b/xen/common/livepatch.c @@ -232,6 +232,29 @@ static const char *livepatch_symbols_lookup(unsigned long addr, return n; } +static int lookup_symbol(struct livepatch_func *f, struct livepatch_elf *elf) +{ + if ( f->old_addr ) + return 0; + + /* Lookup function's old address if not already resolved. */ + f->old_addr = (void *)symbols_lookup_by_name(f->name); + if ( !f->old_addr ) + { + f->old_addr = (void *)livepatch_symbols_lookup_by_name(f->name); + if ( !f->old_addr ) + { + dprintk(XENLOG_ERR, LIVEPATCH "%s: Could not resolve old address of %s\n", + elf->name, f->name); + return -ENOENT; + } + } + dprintk(XENLOG_DEBUG, LIVEPATCH "%s: Resolved old address %s => %p\n", + elf->name, f->name, f->old_addr); + + return 0; +} + static struct payload *find_payload(const char *name) { struct payload *data, *found = NULL; @@ -510,23 +533,9 @@ static int prepare_payload(struct payload *payload, if ( rc ) return rc; - /* Lookup function's old address if not already resolved. */ - if ( !f->old_addr ) - { - f->old_addr = (void *)symbols_lookup_by_name(f->name); - if ( !f->old_addr ) - { - f->old_addr = (void *)livepatch_symbols_lookup_by_name(f->name); - if ( !f->old_addr ) - { - dprintk(XENLOG_ERR, LIVEPATCH "%s: Could not resolve old address of %s\n", - elf->name, f->name); - return -ENOENT; - } - } - dprintk(XENLOG_DEBUG, LIVEPATCH "%s: Resolved old address %s => %p\n", - elf->name, f->name, f->old_addr); - } + rc = lookup_symbol(f, elf); + if ( rc ) + return rc; } sec = livepatch_elf_sec_by_name(elf, ELF_BUILD_ID_NOTE); -- 2.4.11 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |