vmalloc: use rcu list iterator to reduce vmap_area_lock contention
[pandora-kernel.git] / mm / vmalloc.c
index f64632b..fdbb116 100644 (file)
@@ -2690,14 +2690,14 @@ void get_vmalloc_info(struct vmalloc_info *vmi)
 
        prev_end = VMALLOC_START;
 
-       spin_lock(&vmap_area_lock);
+       rcu_read_lock();
 
        if (list_empty(&vmap_area_list)) {
                vmi->largest_chunk = VMALLOC_TOTAL;
                goto out;
        }
 
-       list_for_each_entry(va, &vmap_area_list, list) {
+       list_for_each_entry_rcu(va, &vmap_area_list, list) {
                unsigned long addr = va->va_start;
 
                /*
@@ -2724,7 +2724,7 @@ void get_vmalloc_info(struct vmalloc_info *vmi)
                vmi->largest_chunk = VMALLOC_END - prev_end;
 
 out:
-       spin_unlock(&vmap_area_lock);
+       rcu_read_unlock();
 }
 #endif