diff options
author | Souptick Joarder <jrdr.linux@gmail.com> | 2020-07-12 09:09:55 +0530 |
---|---|---|
committer | Juergen Gross <jgross@suse.com> | 2020-08-03 07:43:16 +0200 |
commit | ff669aa8124035a432d2b7eecdd876b308cd48ee (patch) | |
tree | 4e4d682384abab7186515ca002d94c7f8fed39db /drivers/xen/privcmd.c | |
parent | a0c34d225183fd4aca61dccb50e5783fa2f26db1 (diff) | |
download | linux-ff669aa8124035a432d2b7eecdd876b308cd48ee.tar.gz linux-ff669aa8124035a432d2b7eecdd876b308cd48ee.tar.bz2 linux-ff669aa8124035a432d2b7eecdd876b308cd48ee.zip |
xen/privcmd: Convert get_user_pages*() to pin_user_pages*()
In 2019, we introduced pin_user_pages*() and now we are converting
get_user_pages*() to the new API as appropriate. [1] & [2] could
be referred for more information. This is case 5 as per document [1].
[1] Documentation/core-api/pin_user_pages.rst
[2] "Explicit pinning of user-space pages":
https://lwn.net/Articles/807108/
Signed-off-by: Souptick Joarder <jrdr.linux@gmail.com>
Reviewed-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Paul Durrant <paul@xen.org>
Cc: John Hubbard <jhubbard@nvidia.com>
Cc: Boris Ostrovsky <boris.ostrovsky@oracle.com>
Cc: Paul Durrant <xadimgnik@gmail.com>
Link: https://lore.kernel.org/r/1594525195-28345-4-git-send-email-jrdr.linux@gmail.com
Signed-off-by: Juergen Gross <jgross@suse.com>
Diffstat (limited to 'drivers/xen/privcmd.c')
-rw-r--r-- | drivers/xen/privcmd.c | 10 |
1 files changed, 2 insertions, 8 deletions
diff --git a/drivers/xen/privcmd.c b/drivers/xen/privcmd.c index aa8ca58e6efc..095d683ad574 100644 --- a/drivers/xen/privcmd.c +++ b/drivers/xen/privcmd.c @@ -594,7 +594,7 @@ static int lock_pages( if (requested > nr_pages) return -ENOSPC; - page_count = get_user_pages_fast( + page_count = pin_user_pages_fast( (unsigned long) kbufs[i].uptr, requested, FOLL_WRITE, pages); if (page_count < 0) @@ -610,13 +610,7 @@ static int lock_pages( static void unlock_pages(struct page *pages[], unsigned int nr_pages) { - unsigned int i; - - for (i = 0; i < nr_pages; i++) { - if (!PageDirty(pages[i])) - set_page_dirty_lock(pages[i]); - put_page(pages[i]); - } + unpin_user_pages_dirty_lock(pages, nr_pages, true); } static long privcmd_ioctl_dm_op(struct file *file, void __user *udata) |