diff options
author | Farhan Ali <alifm@linux.ibm.com> | 2019-07-11 17:28:53 +0300 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2019-08-16 11:13:50 +0300 |
commit | d63147ee9c6a4a9872cfe17bd5b2faa06e9b6378 (patch) | |
tree | d67c391876ecbc565af7acb3035608600d7fa1fd /drivers/s390 | |
parent | 7a2688446250ac6e8fc13b5a0cc585ee0984a0b7 (diff) | |
download | linux-d63147ee9c6a4a9872cfe17bd5b2faa06e9b6378.tar.xz |
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')
-rw-r--r-- | drivers/s390/cio/vfio_ccw_cp.c | 4 |
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 1419eaea03d8..5a9e457caef3 100644 --- a/drivers/s390/cio/vfio_ccw_cp.c +++ b/drivers/s390/cio/vfio_ccw_cp.c @@ -119,8 +119,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; ret = pfn_array_pin(pa, mdev); |