Re: [PATCH 1/3] mm/swap: simplify alloc_swap_slot_cache()

From: Tim Chen
Date: Fri May 01 2020 - 17:46:49 EST




On 4/29/20 11:11 PM, Zhen Lei wrote:
> Both "slots" and "slots_ret" are only need to be freed when cache already
> allocated. Make them closer, seems more clear.
>
> No functional change.
>
> Signed-off-by: Zhen Lei <thunder.leizhen@xxxxxxxxxx>
> ---
> mm/swap_slots.c | 18 +++++++++---------
> 1 file changed, 9 insertions(+), 9 deletions(-)
>
> diff --git a/mm/swap_slots.c b/mm/swap_slots.c
> index 0975adc72253..01609b5f0c55 100644
> --- a/mm/swap_slots.c
> +++ b/mm/swap_slots.c
> @@ -136,9 +136,16 @@ static int alloc_swap_slot_cache(unsigned int cpu)
>
> mutex_lock(&swap_slots_cache_mutex);
> cache = &per_cpu(swp_slots, cpu);
> - if (cache->slots || cache->slots_ret)
> + if (cache->slots || cache->slots_ret) {
> /* cache already allocated */
> - goto out;
> + mutex_unlock(&swap_slots_cache_mutex);
> +
> + kvfree(slots);
> + kvfree(slots_ret);
> +
> + return 0;
> + }
> +
> if (!cache->lock_initialized) {
> mutex_init(&cache->alloc_lock);
> spin_lock_init(&cache->free_lock);
> @@ -155,15 +162,8 @@ static int alloc_swap_slot_cache(unsigned int cpu)
> */
> mb();
> cache->slots = slots;
> - slots = NULL;
> cache->slots_ret = slots_ret;
> - slots_ret = NULL;
> -out:
> mutex_unlock(&swap_slots_cache_mutex);
> - if (slots)
> - kvfree(slots);
> - if (slots_ret)
> - kvfree(slots_ret);
> return 0;
> }
>
>

Acked-by: Tim Chen <tim.c.chen@xxxxxxxxxxxxxxx>