kernel/mm/compaction.c
.. .. @@ -1669,10 +1669,12 @@ 1669 1669 block_start_pfn(cc->migrate_pfn, cc->order); 1670 1670 1671 1671 if (cc->last_migrated_pfn < current_block_start) { 1672 - cpu = get_cpu();1672 + cpu = get_cpu_light();1673 + local_lock_irq(swapvec_lock);1673 1674 lru_add_drain_cpu(cpu); 1675 + local_unlock_irq(swapvec_lock);1674 1676 drain_local_pages(zone); 1675 - put_cpu();1677 + put_cpu_light();1676 1678 /* No more flushing until we migrate again */ 1677 1679 cc->last_migrated_pfn = 0; 1678 1680 }