]> rtime.felk.cvut.cz Git - zynq/linux.git/commitdiff
mm-vmalloc.patch
authorThomas Gleixner <tglx@linutronix.de>
Tue, 12 Jul 2011 09:39:36 +0000 (11:39 +0200)
committerMichal Sojka <sojka@merica.cz>
Sun, 13 Sep 2015 07:47:29 +0000 (09:47 +0200)
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
mm/vmalloc.c

index 49abccf29a29f65c4748a6decec00c27fec23c6d..b386f26042e715ac46ec48addb1f2ece39c3390f 100644 (file)
@@ -797,7 +797,7 @@ static struct vmap_block *new_vmap_block(gfp_t gfp_mask)
        struct vmap_block *vb;
        struct vmap_area *va;
        unsigned long vb_idx;
-       int node, err;
+       int node, err, cpu;
 
        node = numa_node_id();
 
@@ -835,11 +835,12 @@ static struct vmap_block *new_vmap_block(gfp_t gfp_mask)
        BUG_ON(err);
        radix_tree_preload_end();
 
-       vbq = &get_cpu_var(vmap_block_queue);
+       cpu = get_cpu_light();
+       vbq = this_cpu_ptr(&vmap_block_queue);
        spin_lock(&vbq->lock);
        list_add_rcu(&vb->free_list, &vbq->free);
        spin_unlock(&vbq->lock);
-       put_cpu_var(vmap_block_queue);
+       put_cpu_light();
 
        return vb;
 }
@@ -907,6 +908,7 @@ static void *vb_alloc(unsigned long size, gfp_t gfp_mask)
        struct vmap_block *vb;
        unsigned long addr = 0;
        unsigned int order;
+       int cpu = 0;
 
        BUG_ON(size & ~PAGE_MASK);
        BUG_ON(size > PAGE_SIZE*VMAP_MAX_ALLOC);
@@ -922,7 +924,8 @@ static void *vb_alloc(unsigned long size, gfp_t gfp_mask)
 
 again:
        rcu_read_lock();
-       vbq = &get_cpu_var(vmap_block_queue);
+       cpu = get_cpu_light();
+       vbq = this_cpu_ptr(&vmap_block_queue);
        list_for_each_entry_rcu(vb, &vbq->free, free_list) {
                int i;
 
@@ -946,7 +949,7 @@ next:
                spin_unlock(&vb->lock);
        }
 
-       put_cpu_var(vmap_block_queue);
+       put_cpu_light();
        rcu_read_unlock();
 
        if (!addr) {