OSDN Git Service

vfio: ccw: refactor and improve pfn_array_alloc_pin()
authorDong Jia Shi <bjsdjshi@linux.ibm.com>
Wed, 23 May 2018 02:56:43 +0000 (04:56 +0200)
committerCornelia Huck <cohuck@redhat.com>
Tue, 29 May 2018 07:27:42 +0000 (09:27 +0200)
commit5c1cfb1c3948fe93a32dfcd75223dda0f1558bb7
tree0bdfe7d0f47217483eba702bdada9a2e9d860ae8
parent80c57f7a075b0c53944113e42ce114d8bf0977e4
vfio: ccw: refactor and improve pfn_array_alloc_pin()

This refactors pfn_array_alloc_pin() and also improves it by adding
defensive code in error handling so that calling pfn_array_unpin_free()
after error return won't lead to problem. This mainly does:
1. Merge pfn_array_pin() into pfn_array_alloc_pin(), since there is no
   other user of pfn_array_pin(). As a result, also remove kernel-doc
   for pfn_array_pin() and add/update kernel-doc for pfn_array_alloc_pin()
   and struct pfn_array.
2. For a vfio_pin_pages() failure, set pa->pa_nr to zero to indicate
   zero pages were pinned.
3. Set pa->pa_iova_pfn to NULL right after it was freed.

Suggested-by: Pierre Morel <pmorel@linux.ibm.com>
Signed-off-by: Dong Jia Shi <bjsdjshi@linux.ibm.com>
Message-Id: <20180523025645.8978-3-bjsdjshi@linux.ibm.com>
Signed-off-by: Cornelia Huck <cohuck@redhat.com>
drivers/s390/cio/vfio_ccw_cp.c