Re: [PATCH -tip v2 1/2] [CLEANUP] perf-probe: Expand given path to absolute path

Masami Hiramatsu
2013-12-27T06:14:44Z

(2013/12/26 23:22), Arnaldo Carvalho de Melo wrote:
> Em Thu, Dec 26, 2013 at 09:14:46AM -0500, David Ahern escreveu:
>> On 12/26/13, 12:41 AM, Masami Hiramatsu wrote:
>>> @@ -180,7 +181,20 @@ static int opt_set_target(const struct option *opt, const char *str,
>>> else
>>> return ret;
>>>
>>> - params.target = str;
>>> + /* Expand given path to absolute path, except for modulename */
>>> + if (params.uprobes || strchr(str, '/')) {
>>> + tmp = realpath(str, NULL);
>>> + if (!tmp) {
>>> + pr_warning("Failed to find the path of %s.\n",
>>> + str);
>>
>> That error message will be misleading if it is generated. How about:
>> Failed to get the absolute path of %s: %d\n", str, errno.
>
> Changed it to:
>
> pr_warning("Failed to get the absolute path of %s: %m\n", str);

Thanks, that looks good to me.

>>> + return ret;
>>> + }
>>> + } else {
>>> + tmp = strdup(str);
>>> + if (!tmp)
>>> + return -ENOMEM;
>>> + }
>>> + params.target = tmp;
>>
>> When is params.target freed?

Nowhere, since there is no terminal code for user
command interface.

Those memories are released when the program terminated.
I think it is just a waste of the time to free the memory
pieces which are not used(and allocated) repeatedly.
Or, is there any chance to call this part directly from
other command?

Thank you,

--
Masami HIRAMATSU
IT Management Research Dept. Linux Technology Center
Hitachi, Ltd., Yokohama Research Laboratory
E-mail: masami.hiramatsu.pt@hitachi.com