KVM: s390: Fix STHYI buffer alignment for diag224
authorJanosch Frank <frankja@linux.vnet.ibm.com>
Wed, 26 Oct 2016 06:48:11 +0000 (08:48 +0200)
committerChristian Borntraeger <borntraeger@de.ibm.com>
Wed, 26 Oct 2016 11:46:44 +0000 (13:46 +0200)
Diag224 requires a page-aligned 4k buffer to store the name table
into. kmalloc does not guarantee page alignment, hence we replace it
with __get_free_page for the buffer allocation.

Cc: stable@vger.kernel.org # v4.8+
Reported-by: Michael Holzheu <holzheu@linux.vnet.ibm.com>
Signed-off-by: Janosch Frank <frankja@linux.vnet.ibm.com>
Reviewed-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
arch/s390/kvm/sthyi.c

index bd98b7d252004dae3d9ea569c6705ea92c8e51f0..05c98bb853cf971117530967a94f9176f85ef049 100644 (file)
@@ -315,7 +315,7 @@ static void fill_diag(struct sthyi_sctns *sctns)
        if (r < 0)
                goto out;
 
-       diag224_buf = kmalloc(PAGE_SIZE, GFP_KERNEL | GFP_DMA);
+       diag224_buf = (void *)__get_free_page(GFP_KERNEL | GFP_DMA);
        if (!diag224_buf || diag224(diag224_buf))
                goto out;
 
@@ -378,7 +378,7 @@ static void fill_diag(struct sthyi_sctns *sctns)
        sctns->par.infpval1 |= PAR_WGHT_VLD;
 
 out:
-       kfree(diag224_buf);
+       free_page((unsigned long)diag224_buf);
        vfree(diag204_buf);
 }