On Wednesday, September 28, 2016 1:19 AM Tim Chen wrote [...] > + > +static int alloc_swap_slot_cache(int cpu) > +{ > + struct swap_slots_cache *cache; > + > + cache = &per_cpu(swp_slots, cpu); > + mutex_init(&cache->alloc_lock); > + spin_lock_init(&cache->free_lock); > + cache->nr = 0; > + cache->cur = 0; > + cache->n_ret = 0; > + cache->slots = vzalloc(sizeof(swp_entry_t) * SWAP_SLOTS_CACHE_SIZE); > + if (!cache->slots) { > + swap_slot_cache_enabled = false; > + return -ENOMEM; > + } > + cache->slots_ret = vzalloc(sizeof(swp_entry_t) * SWAP_SLOTS_CACHE_SIZE); > + if (!cache->slots_ret) { > + vfree(cache->slots); > + swap_slot_cache_enabled = false; > + return -ENOMEM; > + } > + return 0; > +} > + [...] > + > +static void free_slot_cache(int cpu) > +{ > + struct swap_slots_cache *cache; > + > + mutex_lock(&swap_slots_cache_mutex); > + drain_slots_cache_cpu(cpu, SLOTS_CACHE | SLOTS_CACHE_RET); > + cache = &per_cpu(swp_slots, cpu); > + cache->nr = 0; > + cache->cur = 0; > + cache->n_ret = 0; > + vfree(cache->slots); Also free cache->slots_ret? Or fold the relevant two allocations into one? > + mutex_unlock(&swap_slots_cache_mutex); > +} > thanks Hillf -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>