This is the mail archive of the
systemtap@sourceware.org
mailing list for the systemtap project.
Re: [PATCH -tip 1/4] [BUGFIX] perf tools: Initialize dso->node member in dso__new
- From: Arnaldo Carvalho de Melo <acme at redhat dot com>
- To: Masami Hiramatsu <mhiramat at redhat dot com>
- Cc: Ingo Molnar <mingo at elte dot hu>, lkml <linux-kernel at vger dot kernel dot org>, Paul Mackerras <paulus at samba dot org>, Peter Zijlstra <peterz at infradead dot org>, Mike Galbraith <efault at gmx dot de>, Frederic Weisbecker <fweisbec at gmail dot com>, systemtap <systemtap at sources dot redhat dot com>, DLE <dle-develop at lists dot sourceforge dot net>
- Date: Mon, 26 Apr 2010 11:01:57 -0300
- Subject: Re: [PATCH -tip 1/4] [BUGFIX] perf tools: Initialize dso->node member in dso__new
- References: <20100421195616.24664.89980.stgit@localhost6.localdomain6>
Em Wed, Apr 21, 2010 at 03:56:16PM -0400, Masami Hiramatsu escreveu:
> If dso->node member is not initilized, it causes a segmentation
> fault when adding to other lists. It should be initilized in
> dso__new().
>
> Signed-off-by: Masami Hiramatsu <mhiramat@redhat.com>
> Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
> Cc: Peter Zijlstra <peterz@infradead.org>
> Cc: Paul Mackerras <paulus@samba.org>
> Cc: Mike Galbraith <efault@gmx.de>
> Cc: Frederic Weisbecker <fweisbec@gmail.com>
> Cc: Ingo Molnar <mingo@elte.hu>
> ---
>
> tools/perf/util/symbol.c | 1 +
> 1 files changed, 1 insertions(+), 0 deletions(-)
>
> diff --git a/tools/perf/util/symbol.c b/tools/perf/util/symbol.c
> index e782e7d..e77c33a 100644
> --- a/tools/perf/util/symbol.c
> +++ b/tools/perf/util/symbol.c
> @@ -189,6 +189,7 @@ struct dso *dso__new(const char *name)
> self->sorted_by_name = 0;
> self->has_build_id = 0;
> self->kernel = DSO_TYPE_USER;
> + INIT_LIST_HEAD(&self->node);
> }
>
> return self;
Trying to understand how this would be a problem, as:
static inline void __list_add(struct list_head *new,
struct list_head *prev,
struct list_head *next)
{
next->prev = new;
new->next = next;
new->prev = prev;
prev->next = new;
}
This is not a list head, just a node.
Looking at other messages where you described the problem to try to
understand why this would help.
- Arnaldo