lkml.org 
[lkml]   [2005]   [Apr]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH][RFC][0/4] InfiniBand userspace verbs implementation
    Roland Dreier <roland@topspin.com> wrote:
    >
    > OK, I'm by no means an expert on this, but Libor and I looked at
    > rmap.c a little more, and there is code:
    >
    > if ((vma->vm_flags & (VM_LOCKED|VM_RESERVED)) ||
    > ptep_clear_flush_young(vma, address, pte)) {
    > ret = SWAP_FAIL;
    > goto out_unmap;
    > }
    >
    > before the check
    >
    > if (PageSwapCache(page) &&
    > page_count(page) != page_mapcount(page) + 2) {
    > ret = SWAP_FAIL;
    > goto out_unmap;
    > }
    >
    > If userspace allocates some memory but doesn't touch it aside from
    > passing the address in to the kernel, which does get_user_pages(), the
    > PTE will be young in that first test, right?

    If get_user_pages() was called with write=1, get_user_pages() will fault in
    a real page and yes, I guess it'll be pte_young.

    If get_user_pages() was called with write=0, get_user_pages() will fault
    in a mapping of the zero page and we'd never get this far.

    > Does that mean that
    > the userspace mapping will be cleared and userspace will get a
    > different physical page if it faults that address back in?
    >

    We won't try to unmap a page's ptes until that page has file-or-swapcache
    backing.

    If the pte is then cleared, a subsequent minor fault will reestablish the
    mapping to the same physical page. A major fault cannot happen because the
    page was pinned by get_user_pages().

    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2005-04-13 21:38    [W:4.753 / U:0.148 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site