]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
s390: make setup_randomness work
authorHeiko Carstens <heiko.carstens@de.ibm.com>
Sat, 4 Feb 2017 10:40:36 +0000 (11:40 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 15 Mar 2017 02:02:42 +0000 (10:02 +0800)
commit da8fd820f389a0e29080b14c61bf5cf1d8ef5ca1 upstream.

Commit bcfcbb6bae64 ("s390: add system information as device
randomness") intended to add some virtual machine specific information
to the randomness pool.

Unfortunately it uses the page allocator before it is ready to use. In
result the page allocator always returns NULL and the setup_randomness
function never adds anything to the randomness pool.

To fix this use memblock_alloc and memblock_free instead.

Fixes: bcfcbb6bae64 ("s390: add system information as device randomness")
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
arch/s390/kernel/setup.c

index d027f2eb3559f6a095b709dc10fbfc94235752b1..d2bc8fa8b4e63b4f8a7f83809cd8d2ccbf2cd73c 100644 (file)
@@ -819,10 +819,10 @@ static void __init setup_randomness(void)
 {
        struct sysinfo_3_2_2 *vmms;
 
-       vmms = (struct sysinfo_3_2_2 *) alloc_page(GFP_KERNEL);
-       if (vmms && stsi(vmms, 3, 2, 2) == 0 && vmms->count)
+       vmms = (struct sysinfo_3_2_2 *) memblock_alloc(PAGE_SIZE, PAGE_SIZE);
+       if (stsi(vmms, 3, 2, 2) == 0 && vmms->count)
                add_device_randomness(&vmms, vmms->count);
-       free_page((unsigned long) vmms);
+       memblock_free((unsigned long) vmms, PAGE_SIZE);
 }
 
 /*