lkml.org 
[lkml]   [2014]   [Apr]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCHv3 2/2] mm: implement ->map_pages for page cache
On Wed, Apr 02, 2014 at 10:03:24PM +0400, Konstantin Khlebnikov wrote:
> > +void filemap_map_pages(struct vm_area_struct *vma, struct vm_fault *vmf)
> > +{
> > + struct radix_tree_iter iter;
> > + void **slot;
> > + struct file *file = vma->vm_file;
> > + struct address_space *mapping = file->f_mapping;
> > + loff_t size;
> > + struct page *page;
> > + unsigned long address = (unsigned long) vmf->virtual_address;
> > + unsigned long addr;
> > + pte_t *pte;
> > +
> > + rcu_read_lock();
> > + radix_tree_for_each_slot(slot, &mapping->page_tree, &iter, vmf->pgoff) {
> > + if (iter.index > vmf->max_pgoff)
> > + break;
> > +repeat:
> > + page = radix_tree_deref_slot(slot);
>
> Here is obvious race with memory reclaimer/truncate. Pointer to page
> might become NULL.

Thanks for noticing that. It has been fixed in -mm already.

--
Kirill A. Shutemov


\
 
 \ /
  Last update: 2014-04-02 22:01    [W:0.158 / U:0.236 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site