diff options
author | Heiko Carstens <heiko.carstens@de.ibm.com> | 2017-03-11 11:58:27 +0100 |
---|---|---|
committer | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2017-03-22 08:29:09 +0100 |
commit | d2f039742537c4aec6488fa4de0c91a641210fd9 (patch) | |
tree | a29a3346591303001d2271ef9a64596512c42db1 /arch | |
parent | 59808fc81942834964e3b4e65f08e5855a3914a2 (diff) | |
download | linux-stable-d2f039742537c4aec6488fa4de0c91a641210fd9.tar.gz linux-stable-d2f039742537c4aec6488fa4de0c91a641210fd9.tar.bz2 linux-stable-d2f039742537c4aec6488fa4de0c91a641210fd9.zip |
s390/dump_stack: remove whitespace from arch description
The arch description provided for the "Hardware name:" contains lots
of extra whitespace due to the way the SYSIB contents are defined
(strings aren't zero terminated).
This looks a bit odd and therefore remove the extra whitespace
characters. This also gives the opportunity to add more information,
if required, without hitting the magic 80 characters per line limit.
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/s390/kernel/early.c | 29 |
1 files changed, 24 insertions, 5 deletions
diff --git a/arch/s390/kernel/early.c b/arch/s390/kernel/early.c index 01cd7fe08d18..914f273b1983 100644 --- a/arch/s390/kernel/early.c +++ b/arch/s390/kernel/early.c @@ -231,9 +231,28 @@ static noinline __init void detect_machine_type(void) S390_lowcore.machine_flags |= MACHINE_FLAG_VM; } +/* Remove leading, trailing and double whitespace. */ +static inline void strim_all(char *str) +{ + char *s; + + s = strim(str); + if (s != str) + memmove(str, s, strlen(s)); + while (*str) { + if (!isspace(*str++)) + continue; + if (isspace(*str)) { + s = skip_spaces(str); + memmove(str, s, strlen(s) + 1); + } + } +} + static noinline __init void setup_arch_string(void) { struct sysinfo_1_1_1 *mach = (struct sysinfo_1_1_1 *)&sysinfo_page; + char mstr[80]; if (stsi(mach, 1, 1, 1)) return; @@ -241,11 +260,11 @@ static noinline __init void setup_arch_string(void) EBCASC(mach->type, sizeof(mach->type)); EBCASC(mach->model, sizeof(mach->model)); EBCASC(mach->model_capacity, sizeof(mach->model_capacity)); - dump_stack_set_arch_desc("%-16.16s %-4.4s %-16.16s %-16.16s (%s)", - mach->manufacturer, - mach->type, - mach->model, - mach->model_capacity, + sprintf(mstr, "%-16.16s %-4.4s %-16.16s %-16.16s", + mach->manufacturer, mach->type, + mach->model, mach->model_capacity); + strim_all(mstr); + dump_stack_set_arch_desc("%s (%s)", mstr, MACHINE_IS_LPAR ? "LPAR" : MACHINE_IS_VM ? "z/VM" : MACHINE_IS_KVM ? "KVM" : "unknown"); |