Commit 77c7e1bc authored by Mike Travis's avatar Mike Travis Committed by Thomas Gleixner

x86/platform/uv: Fix copied UV5 output archtype

A test shows that the output contains a space:
    # cat /proc/sgi_uv/archtype
    NSGI4 U/UVX

Remove that embedded space by copying the "trimmed" buffer instead of the
untrimmed input character list.  Use sizeof to remove size dependency on
copy out length.  Increase output buffer size by one character just in case
BIOS sends an 8 character string for archtype.

Fixes: 1e61f5a9 ("Add and decode Arch Type in UVsystab")
Signed-off-by: default avatarMike Travis <mike.travis@hpe.com>
Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
Reviewed-by: default avatarSteve Wahl <steve.wahl@hpe.com>
Link: https://lore.kernel.org/r/20201111010418.82133-1-mike.travis@hpe.com
parent b2896458
...@@ -33,7 +33,7 @@ static union uvh_apicid uvh_apicid; ...@@ -33,7 +33,7 @@ static union uvh_apicid uvh_apicid;
static int uv_node_id; static int uv_node_id;
/* Unpack AT/OEM/TABLE ID's to be NULL terminated strings */ /* Unpack AT/OEM/TABLE ID's to be NULL terminated strings */
static u8 uv_archtype[UV_AT_SIZE]; static u8 uv_archtype[UV_AT_SIZE + 1];
static u8 oem_id[ACPI_OEM_ID_SIZE + 1]; static u8 oem_id[ACPI_OEM_ID_SIZE + 1];
static u8 oem_table_id[ACPI_OEM_TABLE_ID_SIZE + 1]; static u8 oem_table_id[ACPI_OEM_TABLE_ID_SIZE + 1];
...@@ -320,7 +320,7 @@ static int __init decode_arch_type(unsigned long ptr) ...@@ -320,7 +320,7 @@ static int __init decode_arch_type(unsigned long ptr)
if (n > 0 && n < sizeof(uv_ate->archtype)) { if (n > 0 && n < sizeof(uv_ate->archtype)) {
pr_info("UV: UVarchtype received from BIOS\n"); pr_info("UV: UVarchtype received from BIOS\n");
uv_stringify(UV_AT_SIZE, uv_archtype, uv_ate->archtype); uv_stringify(sizeof(uv_archtype), uv_archtype, uv_ate->archtype);
return 1; return 1;
} }
return 0; return 0;
...@@ -378,7 +378,7 @@ static int __init uv_set_system_type(char *_oem_id, char *_oem_table_id) ...@@ -378,7 +378,7 @@ static int __init uv_set_system_type(char *_oem_id, char *_oem_table_id)
if (!early_get_arch_type()) if (!early_get_arch_type())
/* If not use OEM ID for UVarchtype */ /* If not use OEM ID for UVarchtype */
uv_stringify(UV_AT_SIZE, uv_archtype, _oem_id); uv_stringify(sizeof(uv_archtype), uv_archtype, oem_id);
/* Check if not hubbed */ /* Check if not hubbed */
if (strncmp(uv_archtype, "SGI", 3) != 0) { if (strncmp(uv_archtype, "SGI", 3) != 0) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment