summaryrefslogtreecommitdiffstats
path: root/drivers/s390/cio
diff options
context:
space:
mode:
authorFarhan Ali <alifm@linux.ibm.com>2019-07-11 10:28:53 -0400
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2019-08-16 10:10:58 +0200
commit6b7cfb522da949a6768c3d71f53020830d48582b (patch)
treeae2c0c4238e99153cd5cee359afe3fb34219636d /drivers/s390/cio
parent4401d1a67e8de49ed655c0f1f45b5a475d9f1070 (diff)
downloadlinux-stable-6b7cfb522da949a6768c3d71f53020830d48582b.tar.gz
linux-stable-6b7cfb522da949a6768c3d71f53020830d48582b.tar.bz2
linux-stable-6b7cfb522da949a6768c3d71f53020830d48582b.zip
vfio-ccw: Set pa_nr to 0 if memory allocation fails for pa_iova_pfn
[ Upstream commit c1ab69268d124ebdbb3864580808188ccd3ea355 ] So we don't call try to call vfio_unpin_pages() incorrectly. Fixes: 0a19e61e6d4c ("vfio: ccw: introduce channel program interfaces") Signed-off-by: Farhan Ali <alifm@linux.ibm.com> Reviewed-by: Eric Farman <farman@linux.ibm.com> Reviewed-by: Cornelia Huck <cohuck@redhat.com> Message-Id: <33a89467ad6369196ae6edf820cbcb1e2d8d050c.1562854091.git.alifm@linux.ibm.com> Signed-off-by: Cornelia Huck <cohuck@redhat.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
Diffstat (limited to 'drivers/s390/cio')
-rw-r--r--drivers/s390/cio/vfio_ccw_cp.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/s390/cio/vfio_ccw_cp.c b/drivers/s390/cio/vfio_ccw_cp.c
index 0e79799e9a71..79eb40bdaf9f 100644
--- a/drivers/s390/cio/vfio_ccw_cp.c
+++ b/drivers/s390/cio/vfio_ccw_cp.c
@@ -89,8 +89,10 @@ static int pfn_array_alloc_pin(struct pfn_array *pa, struct device *mdev,
sizeof(*pa->pa_iova_pfn) +
sizeof(*pa->pa_pfn),
GFP_KERNEL);
- if (unlikely(!pa->pa_iova_pfn))
+ if (unlikely(!pa->pa_iova_pfn)) {
+ pa->pa_nr = 0;
return -ENOMEM;
+ }
pa->pa_pfn = pa->pa_iova_pfn + pa->pa_nr;
pa->pa_iova_pfn[0] = pa->pa_iova >> PAGE_SHIFT;