Re: [RFC] mm/memblock.c: using uninitialized value idx in memblock_add_range()

From: Michal Hocko
Date: Tue Sep 12 2017 - 11:07:48 EST


On Sat 09-09-17 00:15:33, gurugio@xxxxxxxxx wrote:
> From: Gioh Kim <gurugio@xxxxxxxxxxx>
>
> In memblock_add_range(), idx variable is a local value
> but I cannot find initialization of idx value.
> I checked idx value on my Qemu emulator. It was zero.
> Is there any hidden initialization code?

Yes for_each_memblock_type. Ugly as hell! Something to clean up I guess.
Just make the index explicit argument of the macro.

>
> Signed-off-by: Gioh Kim <gi-oh.kim@xxxxxxxxxxxxxxxx>
> ---
> mm/memblock.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/mm/memblock.c b/mm/memblock.c
> index 7b8a5db..23374bc 100644
> --- a/mm/memblock.c
> +++ b/mm/memblock.c
> @@ -515,7 +515,7 @@ int __init_memblock memblock_add_range(struct memblock_type *type,
> bool insert = false;
> phys_addr_t obase = base;
> phys_addr_t end = base + memblock_cap_size(base, &size);
> - int idx, nr_new;
> + int idx = 0, nr_new;
> struct memblock_region *rgn;
>
> if (!size)
> --
> 2.7.4

--
Michal Hocko
SUSE Labs