diff options
Diffstat (limited to 'drivers/iommu/iommufd')
-rw-r--r-- | drivers/iommu/iommufd/pages.c | 15 |
1 files changed, 4 insertions, 11 deletions
diff --git a/drivers/iommu/iommufd/pages.c b/drivers/iommu/iommufd/pages.c index c77177229648..1e1d3509efae 100644 --- a/drivers/iommu/iommufd/pages.c +++ b/drivers/iommu/iommufd/pages.c @@ -711,12 +711,9 @@ static void pfn_reader_user_init(struct pfn_reader_user *user, user->upages_end = 0; user->locked = -1; - if (pages->writable) { - user->gup_flags = FOLL_LONGTERM | FOLL_WRITE; - } else { - /* Still need to break COWs on read */ - user->gup_flags = FOLL_LONGTERM | FOLL_FORCE | FOLL_WRITE; - } + user->gup_flags = FOLL_LONGTERM; + if (pages->writable) + user->gup_flags |= FOLL_WRITE; } static void pfn_reader_user_destroy(struct pfn_reader_user *user, @@ -786,13 +783,9 @@ static int pfn_reader_user_pin(struct pfn_reader_user *user, mmap_read_lock(pages->source_mm); user->locked = 1; } - /* - * FIXME: last NULL can be &pfns->locked once the GUP patch - * is merged. - */ rc = pin_user_pages_remote(pages->source_mm, uptr, npages, user->gup_flags, user->upages, NULL, - NULL); + &user->locked); } if (rc <= 0) { if (WARN_ON(!rc)) |