hc
2023-11-07 f45e756958099c35d6afb746df1d40a1c6302cfc
kernel/mm/vmalloc.c
....@@ -860,7 +860,7 @@
860860 struct vmap_block *vb;
861861 struct vmap_area *va;
862862 unsigned long vb_idx;
863
- int node, err;
863
+ int node, err, cpu;
864864 void *vaddr;
865865
866866 node = numa_node_id();
....@@ -903,11 +903,12 @@
903903 BUG_ON(err);
904904 radix_tree_preload_end();
905905
906
- vbq = &get_cpu_var(vmap_block_queue);
906
+ cpu = get_cpu_light();
907
+ vbq = this_cpu_ptr(&vmap_block_queue);
907908 spin_lock(&vbq->lock);
908909 list_add_tail_rcu(&vb->free_list, &vbq->free);
909910 spin_unlock(&vbq->lock);
910
- put_cpu_var(vmap_block_queue);
911
+ put_cpu_light();
911912
912913 return vaddr;
913914 }
....@@ -976,6 +977,7 @@
976977 struct vmap_block *vb;
977978 void *vaddr = NULL;
978979 unsigned int order;
980
+ int cpu;
979981
980982 BUG_ON(offset_in_page(size));
981983 BUG_ON(size > PAGE_SIZE*VMAP_MAX_ALLOC);
....@@ -990,7 +992,8 @@
990992 order = get_order(size);
991993
992994 rcu_read_lock();
993
- vbq = &get_cpu_var(vmap_block_queue);
995
+ cpu = get_cpu_light();
996
+ vbq = this_cpu_ptr(&vmap_block_queue);
994997 list_for_each_entry_rcu(vb, &vbq->free, free_list) {
995998 unsigned long pages_off;
996999
....@@ -1013,7 +1016,7 @@
10131016 break;
10141017 }
10151018
1016
- put_cpu_var(vmap_block_queue);
1019
+ put_cpu_light();
10171020 rcu_read_unlock();
10181021
10191022 /* Allocate new block if nothing was found */