• Zhen Lei's avatar
    debugobjects: Remove redundant checks in fill_pool() · 63a4a9b5
    Zhen Lei authored
    fill_pool() checks locklessly at the beginning whether the pool has to be
    refilled. After that it checks locklessly in a loop whether the free list
    contains objects and repeats the refill check.
    
    If both conditions are true, it acquires the pool lock and tries to move
    objects from the free list to the pool repeating the same checks again.
    
    There are two redundant issues with that:
    
          1) The repeated check for the fill condition
          2) The loop processing
    
    The repeated check is pointless as it was just established that fill is
    required. The condition has to be re-evaluated under the lock anyway.
    
    The loop processing is not required either because there is practically
    zero chance that a repeated attempt will succeed if the checks under the
    lock terminate the moving of objects.
    
    Remove the redundant check and replace the loop with a simple if condition.
    
    [ tglx: Massaged change log ]
    Signed-off-by: default avatarZhen Lei <thunder.leizhen@huawei.com>
    Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
    Link: https://lore.kernel.org/all/20240904133944.2124-4-thunder.leizhen@huawei.com
    63a4a9b5
debugobjects.c 36 KB