We will only reach the lock initialization code
in alloc_swap_slot_cache when the cpu's swap_slots_cache's slots
have not been allocated and swap_slots_cache has not been initialized
previously.  So the lock_initialized check is redundant and unnecessary.
Remove lock_initialized flag from swap_slots_cache to save memory.

Reported-by: Wenwei Tao <[email protected]>
Signed-off-by: Tim Chen <[email protected]>
---
 include/linux/swap_slots.h | 1 -
 mm/swap_slots.c            | 9 ++++-----
 2 files changed, 4 insertions(+), 6 deletions(-)

diff --git a/include/linux/swap_slots.h b/include/linux/swap_slots.h
index 6ef92d1..a75c30b 100644
--- a/include/linux/swap_slots.h
+++ b/include/linux/swap_slots.h
@@ -10,7 +10,6 @@
 #define THRESHOLD_DEACTIVATE_SWAP_SLOTS_CACHE  (2*SWAP_SLOTS_CACHE_SIZE)
 
 struct swap_slots_cache {
-       bool            lock_initialized;
        struct mutex    alloc_lock; /* protects slots, nr, cur */
        swp_entry_t     *slots;
        int             nr;
diff --git a/mm/swap_slots.c b/mm/swap_slots.c
index 4c5457c..c039e6c 100644
--- a/mm/swap_slots.c
+++ b/mm/swap_slots.c
@@ -140,11 +140,10 @@ static int alloc_swap_slot_cache(unsigned int cpu)
        if (cache->slots || cache->slots_ret)
                /* cache already allocated */
                goto out;
-       if (!cache->lock_initialized) {
-               mutex_init(&cache->alloc_lock);
-               spin_lock_init(&cache->free_lock);
-               cache->lock_initialized = true;
-       }
+
+       mutex_init(&cache->alloc_lock);
+       spin_lock_init(&cache->free_lock);
+
        cache->nr = 0;
        cache->cur = 0;
        cache->n_ret = 0;
-- 
2.9.4

Reply via email to