lkml.org 
[lkml]   [2002]   [Jan]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectShort question about the mmap method
    Hi lkml readers,

    I have a question regarding drivers implementing the mmap and nopage methods. In some references
    I've read that pages in kernel allocated memory (either allocated with kmalloc, vmalloc or
    __get_free_pages) should be set to reserved (mem_map_reserve or set_bit(PG_reserved, page->flags)
    before they can be mmap'ed to guarantee that they can't be swapped out. Is this true ?

    The reason I ask is that I have a test driver that allocates some pages with vmalloc(), reserves
    them with mem_map_reserve(), and uses the "nopage" method to give a userspace app access to them.
    When the userpace app accesses the page, the "nopage" function is invoked as expected and the
    page->count is incremented (by the nopage function). When this application exits the page->count
    should have been decremented by the kernel, but it seems like it doesn't since the page is reserved
    and this causes a giant memleak when the driver is unloaded since the pages are not put back to the
    free list unless page->count is zero (I do mem_map_unreserve before vfree). If I avoid using
    mem_map_reserve (and _unreserve) the page count is 1 at the time I unload the driver and everything
    goes fine.

    The kernel I'm using is RedHat 7.2 2.4.9-12

    One more question:

    When getting the "struct page" for pages allocated with vmalloc() I use the same method as
    drivers/media/video/bttv-driver.c (checking the page table). Somewhere (I think Rubini) I read that
    the init_mm.page_table_lock should be held before checking the page table. Is this true, or can it
    safely be done without doing that (the bttv-driver.c doesn't) ?

    Any ideas & comments are appreciated.

    Thanks,
    --
    Steffen Persvold | Scalable Linux Systems | Try out the world's best
    mailto:sp@scali.no | http://www.scali.com | performing MPI implementation:
    Tel: (+47) 2262 8950 | Olaf Helsets vei 6 | - ScaMPI 1.12.2 -
    Fax: (+47) 2262 8951 | N0621 Oslo, NORWAY | >300MBytes/s and <4uS latency
    -
    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-03-22 13:15    [W:0.027 / U:59.876 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site