Messages in this thread | | | From | KOSAKI Motohiro <> | Subject | Re: [PATCH -v2] rmap: make anon_vma_prepare link in all the anon_vmas of a mergeable VMA | Date | Tue, 13 Apr 2010 19:53:33 +0900 (JST) |
| |
> struct anon_vma *page_lock_anon_vma(struct page *page) > { > @@ -294,14 +309,24 @@ struct anon_vma *page_lock_anon_vma(struct page *page) > unsigned long anon_mapping; > > rcu_read_lock(); > - anon_mapping = (unsigned long) ACCESS_ONCE(page->mapping); > + anon_mapping = (unsigned long)rcu_dereference(page->mapping); > if ((anon_mapping & PAGE_MAPPING_FLAGS) != PAGE_MAPPING_ANON) > goto out; > - if (!page_mapped(page)) > - goto out; > > anon_vma = (struct anon_vma *) (anon_mapping - PAGE_MAPPING_ANON); > spin_lock(&anon_vma->lock);
Does anon->lock dereference is guranteed if page->_mapcount==-1? It can be freed miliseconds ago, rcu_read_lock() doesn't provide such gurantee.
perhaps, I'm missing your point.
| |