Preparation for the next changes. Shift "+= offset" from update_symbol_cache() to ->fetch[FETCH_MTD_symbol], this allows to overload the meaning of sc->offset.
Also remove the !offset check in traceprobe_split_symbol_offset(), it is never called with offset == NULL. Signed-off-by: Oleg Nesterov <o...@redhat.com> --- kernel/trace/trace_probe.c | 13 +++---------- 1 files changed, 3 insertions(+), 10 deletions(-) diff --git a/kernel/trace/trace_probe.c b/kernel/trace/trace_probe.c index e167c0a..dcf7780 100644 --- a/kernel/trace/trace_probe.c +++ b/kernel/trace/trace_probe.c @@ -230,14 +230,9 @@ struct symbol_cache { unsigned long addr; }; -static unsigned long update_symbol_cache(struct symbol_cache *sc) +static void update_symbol_cache(struct symbol_cache *sc) { sc->addr = (unsigned long)kallsyms_lookup_name(sc->symbol); - - if (sc->addr) - sc->addr += sc->offset; - - return sc->addr; } static void free_symbol_cache(struct symbol_cache *sc) @@ -273,8 +268,9 @@ static __kprobes void FETCH_FUNC_NAME(symbol, type)(struct pt_regs *regs,\ void *data, void *dest) \ { \ struct symbol_cache *sc = data; \ + long off = sc->offset; \ if (sc->addr) \ - fetch_memory_##type(regs, (void *)sc->addr, dest); \ + fetch_memory_##type(regs, (void *)sc->addr + off, dest);\ else \ *(type *)dest = 0; \ } @@ -497,9 +493,6 @@ int traceprobe_split_symbol_offset(char *symbol, unsigned long *offset) char *tmp; int ret; - if (!offset) - return -EINVAL; - tmp = strchr(symbol, '+'); if (tmp) { /* skip sign because kstrtoul doesn't accept '+' */ -- 1.5.5.1 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/