From d121f84909b2925c190a5fd583e2c8b2e946e0b3 Mon Sep 17 00:00:00 2001 From: Michael Holzheu Date: Tue, 27 Dec 2011 11:25:46 +0100 Subject: [PATCH] --- yaml --- r: 280611 b: refs/heads/master c: 1fb810576f0e92451a5d46774bbd593946ca3526 h: refs/heads/master i: 280609: bb4e2b295afbdc2312aab2080b607ca4beb36509 280607: 1d5f23a0a914776c1a42294cc6e82222afb9a238 v: v3 --- [refs] | 2 +- trunk/arch/s390/kernel/early.c | 20 ++++++++++++-------- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/[refs] b/[refs] index e1f9f1492a04..825b37bff6c1 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 272f01bf9b6da93f49fcca2656c24da8d2cfcc09 +refs/heads/master: 1fb810576f0e92451a5d46774bbd593946ca3526 diff --git a/trunk/arch/s390/kernel/early.c b/trunk/arch/s390/kernel/early.c index c9ffe0025197..52098d6dfaa7 100644 --- a/trunk/arch/s390/kernel/early.c +++ b/trunk/arch/s390/kernel/early.c @@ -434,18 +434,22 @@ static void __init append_to_cmdline(size_t (*ipl_data)(char *, size_t)) } } -static void __init setup_boot_command_line(void) +static inline int has_ebcdic_char(const char *str) { int i; - /* convert arch command line to ascii */ - for (i = 0; i < ARCH_COMMAND_LINE_SIZE; i++) - if (COMMAND_LINE[i] & 0x80) - break; - if (i < ARCH_COMMAND_LINE_SIZE) - EBCASC(COMMAND_LINE, ARCH_COMMAND_LINE_SIZE); - COMMAND_LINE[ARCH_COMMAND_LINE_SIZE-1] = 0; + for (i = 0; str[i]; i++) + if (str[i] & 0x80) + return 1; + return 0; +} +static void __init setup_boot_command_line(void) +{ + COMMAND_LINE[ARCH_COMMAND_LINE_SIZE - 1] = 0; + /* convert arch command line to ascii if necessary */ + if (has_ebcdic_char(COMMAND_LINE)) + EBCASC(COMMAND_LINE, ARCH_COMMAND_LINE_SIZE); /* copy arch command line */ strlcpy(boot_command_line, strstrip(COMMAND_LINE), ARCH_COMMAND_LINE_SIZE);