(Please ignore if you see this twice, I am sending this a second time as I
got an error
on previous send)
Roland Dreier <[email protected]> wrote:
...
> +int ipath_mlock(unsigned long start_page, size_t num_pages, struct page
**p)
> +{
> + int n;
> +
> + _IPATH_VDBG("pin %lx pages from vaddr %lx\n", num_pages,
start_page);
> + down_read(¤t->mm->mmap_sem);
> + n = get_user_pages(current, current->mm, start_page, num_pages, 1,
1,
> + p, NULL);
> + up_read(¤t->mm->mmap_sem);
> + if (n != num_pages) {
> + _IPATH_INFO
> + ("get_user_pages (0x%lx pages starting at 0x%lx failed with
%d\n",
> + num_pages, start_page, n);
> + if (n < 0) /* it's an errno */
> + return n;
> + return -ENOMEM; /* no way to know actual error */
> + }
> +
> + return 0;
> +}
For this routine (where num_pages can be >1), in the error case you need
to
page_cache_release() the pages that were successfully 'got'
(get_page()'d).
- KK
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[Index of Archives]
[Kernel Newbies]
[Netfilter]
[Bugtraq]
[Photo]
[Stuff]
[Gimp]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Video 4 Linux]
[Linux for the blind]
[Linux Resources]