s390/topology: correct allocation of topology information
authorMartin Schwidefsky <schwidefsky@de.ibm.com>
Sat, 4 Feb 2017 11:38:12 +0000 (12:38 +0100)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Tue, 7 Feb 2017 06:27:12 +0000 (07:27 +0100)
The data stored by the STSI instruction can be up to a page in size
but the memblock_virt_alloc allocation for tl_info only specifies
16 bytes. The memory after the short allocation is overwritten
every time arch_update_cpu_topology is called.

Fixes: 8c9105802235 "s390/numa: establish cpu to node mapping early"
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
arch/s390/kernel/topology.c

index 7b2b19b0b294887637560199ebc309ed6f1da49f..2cd5f4f1013c2bd9c9f171ac33589062a14c6fcc 100644 (file)
@@ -458,7 +458,7 @@ void __init topology_init_early(void)
        set_sched_topology(s390_topology);
        if (!MACHINE_HAS_TOPOLOGY)
                goto out;
-       tl_info = memblock_virt_alloc(sizeof(*tl_info), PAGE_SIZE);
+       tl_info = memblock_virt_alloc(PAGE_SIZE, PAGE_SIZE);
        info = tl_info;
        store_topology(info);
        pr_info("The CPU configuration topology of the machine is: %d %d %d %d %d %d / %d\n",