All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andrew Morton <akpm@linux-foundation.org>
To: Davide Libenzi <davidel@xmailserver.org>
Cc: linux-kernel@vger.kernel.org, andrea@qumranet.com,
	vegard.nossum@gmail.com
Subject: Re: [patch] avoid kmemcheck warning in epoll
Date: Mon, 11 Feb 2008 14:56:44 -0800	[thread overview]
Message-ID: <20080211145644.d940ad07.akpm@linux-foundation.org> (raw)
In-Reply-To: <Pine.LNX.4.64.0802101323140.27286@alien.or.mcafeemobile.com>

On Sun, 10 Feb 2008 13:32:01 -0800 (PST)
Davide Libenzi <davidel@xmailserver.org> wrote:

> Epoll calls rb_set_parent(n, n) to initialize the rb-tree node, but 
> rb_set_parent() accesses node's pointer in its code. This creates a 
> warning in kmemcheck (reported by Vegard Nossum) about an uninitialized 
> memory access. The warning is harmless since the following rb-tree node 
> insert is going to overwrite the node data. In any case I think it's 
> better to not have that happening at all, and fix it by properly 
> initializing the data.
> 
> 
> Signed-off-by: Davide Libenzi <davidel@xmailserver.org>
> 
> 
> - Davide
> 
> 
> ---
>  fs/eventpoll.c         |    2 +-
>  include/linux/rbtree.h |   12 ++++++++++++
>  2 files changed, 13 insertions(+), 1 deletion(-)
> 
> Index: linux-2.6.mod/fs/eventpoll.c
> ===================================================================
> --- linux-2.6.mod.orig/fs/eventpoll.c	2008-02-10 12:36:20.000000000 -0800
> +++ linux-2.6.mod/fs/eventpoll.c	2008-02-10 12:50:41.000000000 -0800
> @@ -260,7 +260,7 @@
>  /* Special initialization for the RB tree node to detect linkage */
>  static inline void ep_rb_initnode(struct rb_node *n)
>  {
> -	rb_set_parent(n, n);
> +	rb_init_node(n, n);
>  }
>  
>  /* Removes a node from the RB tree and marks it for a fast is-linked check */
> Index: linux-2.6.mod/include/linux/rbtree.h
> ===================================================================
> --- linux-2.6.mod.orig/include/linux/rbtree.h	2008-02-10 12:36:13.000000000 -0800
> +++ linux-2.6.mod/include/linux/rbtree.h	2008-02-10 12:51:57.000000000 -0800
> @@ -112,6 +112,18 @@
>  	struct rb_node *rb_node;
>  };
>  
> +/**
> + * rb_init_node - Initializes the node internal data
> + *
> + * @node: Pointer to the RB-Tree node
> + * @parent: Pointer to the parent node, or NULL
> + *
> + */
> +static inline void rb_init_node(struct rb_node *node, struct rb_node *parent)
> +{
> +	node->rb_parent_color = (unsigned long) parent;
> +	node->rb_left = node->rb_right = NULL;
> +}

Is epoll the only rbtree-using code which exhibits this problem?  If so,
what is epoll doing differently from all the others?

  reply	other threads:[~2008-02-11 22:58 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-02-10 21:32 [patch] avoid kmemcheck warning in epoll Davide Libenzi
2008-02-11 22:56 ` Andrew Morton [this message]
2008-02-11 23:37   ` Davide Libenzi
  -- strict thread matches above, loose matches on Subject: below --
2008-02-12  6:03 Davide Libenzi
2008-02-12  6:21 ` Andrew Morton

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20080211145644.d940ad07.akpm@linux-foundation.org \
    --to=akpm@linux-foundation.org \
    --cc=andrea@qumranet.com \
    --cc=davidel@xmailserver.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=vegard.nossum@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.