| From 45c7ee43a5184ddbff652ee0d2e826f86f1b616b Mon Sep 17 00:00:00 2001 |
| From: Janosch Frank <frankja@linux.vnet.ibm.com> |
| Date: Wed, 26 Oct 2016 08:48:11 +0200 |
| Subject: KVM: s390: Fix STHYI buffer alignment for diag224 |
| |
| From: Janosch Frank <frankja@linux.vnet.ibm.com> |
| |
| commit 45c7ee43a5184ddbff652ee0d2e826f86f1b616b upstream. |
| |
| 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. |
| |
| 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> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| arch/s390/kvm/sthyi.c | 4 ++-- |
| 1 file changed, 2 insertions(+), 2 deletions(-) |
| |
| --- a/arch/s390/kvm/sthyi.c |
| +++ b/arch/s390/kvm/sthyi.c |
| @@ -315,7 +315,7 @@ static void fill_diag(struct sthyi_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->par.infpval1 |= PAR_WGHT_VLD; |
| |
| out: |
| - kfree(diag224_buf); |
| + free_page((unsigned long)diag224_buf); |
| vfree(diag204_buf); |
| } |
| |