
printf as currently implemented in u-boot has a problem where it can overflow an internal buffer if it prints an expanded string that's too long. Our command lines are long enough to cause this problem. A fix should be coming, but in the mean time this change replaces a problematic printf with a few calls to puts that have the same effect. This may perform slightly better because it should avoid a copy and scanning for format specifiers. The amount of time it actually takes up is very tiny relative to everything else so in practice that's probably irrelevant.
Signed-off-by: Gabe Black gabeblack@chromium.org --- Changes in v2: - Rebase onto the x86 repository. - Change the style of the summary tag.
arch/x86/lib/zimage.c | 4 +++- 1 files changed, 3 insertions(+), 1 deletions(-)
diff --git a/arch/x86/lib/zimage.c b/arch/x86/lib/zimage.c index 8b42b5c..6843ff6 100644 --- a/arch/x86/lib/zimage.c +++ b/arch/x86/lib/zimage.c @@ -75,7 +75,9 @@ static void build_command_line(char *command_line, int auto_boot) if (env_command_line) strcat(command_line, env_command_line);
- printf("Kernel command line: "%s"\n", command_line); + puts("Kernel command line: ""); + puts(command_line); + puts(""\n"); }
void *load_zimage(char *image, unsigned long kernel_size,