re: params: <level>_initcall-like kernel parameters

From: Pawel Moll
Date: Thu Feb 02 2012 - 06:09:05 EST


Morning,

On Thu, 2012-02-02 at 09:56 +0000, Dan Carpenter wrote:
> The patch b41c2e271944: "params: <level>_initcall-like kernel
> parameters" from Dec 12, 2011, leads to the following warning:
> init/main.c:749 do_initcall_level()
> error: buffer overflow 'initcall_level_names' 7 <= 7
>
> 743 static void __init do_initcall_level(int level)
> 744 {
> 745 extern const struct kernel_param __start___param[], __stop___param[];
> 746 initcall_t *fn;
> 747
> 748 strcpy(static_command_line, saved_command_line);
> 749 parse_args(initcall_level_names[level],
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^
> initcall_level_names[] has 7 elements so initcall_level_names[7] is past
> the end of the array.
>
> 750 static_command_line, __start___param,
> 751 __stop___param - __start___param,
> 752 level, level,
> 753 ignore_unknown_bootoption);
> 754
> 755 for (fn = initcall_levels[level]; fn < initcall_levels[level+1]; fn++)
> 756 do_one_initcall(*fn);
> 757 }
> 758
> 759 static void __init do_initcalls(void)
> 760 {
> 761 int level;
> 762
> 763 for (level = 0; level < ARRAY_SIZE(initcall_levels) - 1; level++)
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> initcall_levels[] has 9 elements so level is 0-7 here.
>
> 764 do_initcall_level(level);
> 765 }

You're right, of course! The initcall_level_names is missing "early
parameters" string as the first element of the array. Well spotted - may
I asked what tool did you use to get this message?

Rusty, do you want me to re-send the patch with this string fixed? I
think you have rebased it on top of your bool-param series?

Thanks for your time!

PaweÅ



--
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/