for (j = 0; j < nf_pages; j++) {
if (pages[j]) {
SetPageDirty(pages[j]);
- page_cache_release(pages[j]);
+ put_page(pages[j]);
}
}
kfree(pages);
// pin the user pages; use semaphores on linux for doing the same
down_read(¤t->mm->mmap_sem);
- *nf_pages = (int32_t)get_user_pages(current, current->mm, (uint64_t)data,
- nr_pages, PROT_WRITE, 1, pages, NULL);
+ *nf_pages = (int32_t)get_user_pages((uint64_t)data, nr_pages,
+ (FOLL_WRITE | FOLL_FORCE), pages, NULL);
up_read(¤t->mm->mmap_sem);
// compare if the no of final pages is equal to no of requested pages