]> bbs.cooldavid.org Git - net-next-2.6.git/blobdiff - mm/ksm.c
mm: always lock the root (oldest) anon_vma
[net-next-2.6.git] / mm / ksm.c
index eb9f6806ed51d16ee7ad1f786eb2cc29a59f63ef..da6037c261f194c50c85ceb61a6ed896131ee49d 100644 (file)
--- a/mm/ksm.c
+++ b/mm/ksm.c
@@ -325,7 +325,7 @@ static void drop_anon_vma(struct rmap_item *rmap_item)
 {
        struct anon_vma *anon_vma = rmap_item->anon_vma;
 
-       if (atomic_dec_and_lock(&anon_vma->external_refcount, &anon_vma->lock)) {
+       if (atomic_dec_and_lock(&anon_vma->external_refcount, &anon_vma->root->lock)) {
                int empty = list_empty(&anon_vma->head);
                anon_vma_unlock(anon_vma);
                if (empty)