On Tue, Sep 28, 2004 at 05:40:26PM -0500, Timur Tabi wrote: > I was hoping that this bug would be fixed in the 2.6 kernels, but > apparently it hasn't been. > > Function get_user_pages() is supposed to lock user memory. However, > under extreme memory constraints, the kernel will swap out the "locked" > memory. > > I have a test app which does this: > > 1) Calls our driver, which issues a get_user_pages() call for one page. > 2) Calls our driver again to get the physical address of that page (the > driver uses pgd/pmd/pte_offset). > 3) Tries allocate 1GB of memory (this system has 1GB of physical RAM). > 4) Tries to get the physical address again. > > In step 4, the physical address is usually zero, which means either > pgd_offset or pmd_offset failed. This indicates the page was swapped out. > > I don't understand how this bug can continue to exist after all this > time. get_user_pages() is supposed to lock the memory, because drivers > use it for DMA'ing directly into user memory. get_user_pages locks the page in memory. It doesn't do anything about ptes. -- Kernelnewbies: Help each other learn about the Linux kernel. Archive: http://mail.nl.linux.org/kernelnewbies/ FAQ: http://kernelnewbies.org/faq/