On Thu, Jul 3, 2014 at 12:57 PM, Ben Pfaff <b...@nicira.com> wrote:
> On Sat, Jun 28, 2014 at 02:03:15PM -0700, Ansis Atteka wrote:
>> From: Ansis <ansisatt...@gmail.com>
>>
>> Commit 8a9562 ("dpif-netdev: Add DPDK netdev.") reversed sequence
>> in which set_program_name() and proctitle_init() functions are
>> called. This introduced a regression where program_name and argv_start
>> would point to exactly the same memory (previously both of these
>> pointers were pointing to different memory locations because
>> proctitle_init() would have beforehand created a copy of argv[0]
>> for the set_program_name() call).
>>
>> This regression on my system caused ovs-vswitchd monitoring process to
>> show up without process name:
>>
>> ... 00:00:00 : monitoring pid 26308 (healthy)
>>
>> Ps output was lacking process name because following code was
>> using overlapping memory for source and target buffer:.
>>
>> proctitle_set(const char *format, ...)
>> {
>> ...
>> n = snprintf(argv_start, argv_size, "%s: ", program_name);
>>
>> Overall C99 and POSIX standards state that behavior is undefined
>> if source and target buffers overlap.
>>
>> Signed-off-by: Ansis Atteka <aatt...@nicira.com>
>
> I like this regardless of the bug fix because it makes behavior more
> consistent on Windows and Unix (program_name is now malloc'd in both
> cases).
>
> I would remove the 'if (program_name)' test around the free call,
> since free(NULL) is a no-op anyway.
>
> Acked-by: Ben Pfaff <b...@nicira.com>
Thanks. I removed the "if" statement and pushed this to master and branch-2.3.
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev