lkml.org 
[lkml]   [2009]   [Sep]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    SubjectRe: [PATCH tracing/kprobes 2/6] ftrace: Fix trace_add_event_call() to initialize list
    From
    Date
    On Wed, 2009-09-16 at 10:17 -0400, Masami Hiramatsu wrote:
    > Steven Rostedt wrote:

    > >> diff --git a/kernel/trace/trace_events.c b/kernel/trace/trace_events.c
    > >> index ba34920..38e82a5 100644
    > >> --- a/kernel/trace/trace_events.c
    > >> +++ b/kernel/trace/trace_events.c
    > >> @@ -1009,10 +1009,14 @@ static int __trace_add_event_call(struct ftrace_event_call *call)
    > >> if (!d_events)
    > >> return -ENOENT;
    > >>
    > >> + INIT_LIST_HEAD(&call->list);
    > >
    > > The INIT_LIST_HEAD is not needed here. The list_add will assign it.
    >
    > Without initializing it, list debugging code warns always :-)
    > Please see, __list_add()@lib/list_debug.c

    /me looks

    from: include/linux/list.h

    static inline void list_add(struct list_head *new, struct list_head *head)
    {
    __list_add(new, head, head->next);
    }

    from: lib/list_debug.c

    void __list_add(struct list_head *new,
    struct list_head *prev,
    struct list_head *next)
    {
    WARN(next->prev != prev,
    "list_add corruption. next->prev should be "
    "prev (%p), but was %p. (next=%p).\n",
    prev, next->prev, next);
    WARN(prev->next != next,
    "list_add corruption. prev->next should be "
    "next (%p), but was %p. (prev=%p).\n",
    next, prev->next, prev);
    next->prev = new;
    new->next = next;
    new->prev = prev;
    prev->next = new;
    }

    What you pass in is:

    list_add(&call->list, &ftrace_events);

    new = &call->list;
    prev = &ftrace_events->prev;
    next = &ftrace_events->next;

    The above code never tests "new". The INIT_LIST_HEAD is useless.

    -- Steve




    \
     
     \ /
      Last update: 2009-09-16 16:31    [W:6.188 / U:0.248 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site