Re: [PATCH] mm: fix uninitialized variables for find_vma_preparecallers

From: Hugh Dickins
Date: Mon Jun 30 2008 - 15:00:04 EST


On Mon, 30 Jun 2008, Benny Halevy wrote:
> gcc 4.3.0 correctly emits the following warnings.
> When a vma covering addr is found, find_vma_prepare indeed returns without
> setting pprev, rb_link, and rb_parent.

That's amusing, thank you.

You may wonder how the vma rb_tree has been working all these years
despite that. The answer is that we only use find_vma_prepare when
about to insert a new vma: if there's anything already there, it's
either an error condition, or we go off and unmap the overlap without
taking any interest in those uninitialized values for linking.

It would be nicer to initialize them, and your patch is certainly
nice and simple. Would it have the effect, that it returns with
vma == *pprev when addr falls within an existing vma?
That would be a sensible outcome, I think.

Hugh

> [warnings snipped]
>
> Signed-off-by: Benny Halevy <bhalevy@xxxxxxxxxxx>
> ---
> mm/mmap.c | 2 +-
> 1 files changed, 1 insertions(+), 1 deletions(-)
>
> diff --git a/mm/mmap.c b/mm/mmap.c
> index 3354fdd..81b9873 100644
> --- a/mm/mmap.c
> +++ b/mm/mmap.c
> @@ -366,7 +366,7 @@ find_vma_prepare(struct mm_struct *mm, unsigned long addr,
> if (vma_tmp->vm_end > addr) {
> vma = vma_tmp;
> if (vma_tmp->vm_start <= addr)
> - return vma;
> + break;
> __rb_link = &__rb_parent->rb_left;
> } else {
> rb_prev = __rb_parent;
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/