Hi, > + if (is_file_hugepages(memfd)) { > + hpstate = hstate_file(memfd); > + pgoff = list[i].offset >> huge_page_shift(hpstate); > + subpgoff = (list[i].offset & > + ~huge_page_mask(hpstate)) >> PAGE_SHIFT; > + hpage = find_get_page_flags( > + file_inode(memfd)->i_mapping, > + pgoff, FGP_ACCESSED); > + if (IS_ERR(hpage)) { > + ret = PTR_ERR(hpage); > goto err; > } > + } > + for (pgidx = 0; pgidx < pgcnt; pgidx++) { > + if (is_file_hugepages(memfd)) { > + page = hpage + subpgoff + pgidx; > + get_page(page); Hmm. Does this work in case the page range spans multiple huge pages? take care, Gerd