Hi, 2012/10/16 Masami Hiramatsu <masami.hiramatsu...@hitachi.com>: > (2012/10/16 10:37), Hyeoncheol Lee wrote: >> convert_name_to_addr() allocated sizeof(char *) * MAX_PROBE_ARGS >> bytes for a function name > > Yeah, that one was from my laziness... > >> >> Cc: Masami Hiramatsu <masami.hiramatsu...@hitachi.com> >> Cc: Srikar Dronamraju <sri...@linux.vnet.ibm.com> >> Signed-off-by: Hyeoncheol Lee <hyc....@gmail.com> >> --- >> tools/perf/util/probe-event.c | 5 +++-- >> 1 file changed, 3 insertions(+), 2 deletions(-) >> >> diff --git a/tools/perf/util/probe-event.c b/tools/perf/util/probe-event.c >> index 49a256e..bb40ed4 100644 >> --- a/tools/perf/util/probe-event.c >> +++ b/tools/perf/util/probe-event.c >> @@ -2352,13 +2352,14 @@ static int convert_name_to_addr(struct >> perf_probe_event *pev, const char *exec) >> free(exec_copy); >> } >> free(pp->function); >> - pp->function = zalloc(sizeof(char *) * MAX_PROBE_ARGS); >> + pp->function = zalloc(sizeof(char) * >> + (3 + sizeof(unsigned long long) * 2)); > > Could you comment that this is enough long here? >
Because a hexadecimal address that starts with "0x" will be stored in pp->function. sizeof(unsigned long long) * 2 is maximum length of hexadecimal number of variable "vaddr" and 3 bytes are for "0x" and null character. >> if (!pp->function) { >> ret = -ENOMEM; >> pr_warning("Failed to allocate memory by zalloc.\n"); >> goto out; >> } >> - e_snprintf(pp->function, MAX_PROBE_ARGS, "0x%llx", vaddr); >> + sprintf(pp->function, "0x%llx", vaddr); > > And at least we should use snprintf instead of sprintf... > (I think ret = e_snprintf(...) is better) > You are right, but I didn't want to write down the length of "pp->function" again. >> ret = 0; >> >> out: >> > > Thank you, > > -- > Masami HIRAMATSU > IT Management Research Dept. Linux Technology Center > Hitachi, Ltd., Yokohama Research Laboratory > E-mail: masami.hiramatsu...@hitachi.com > > Thank you very much! -- 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/