• Jinbum Park's avatar
    ARM: 8742/1: Always use REFCOUNT_FULL · b26d07a0
    Jinbum Park authored
    refcount_t overflow detection is implemented as two way.
    
    1. REFCOUNT_FULL
    
    - It means the full refcount_t implementation
      which has validation but is slightly slower.
    - (fd25d19f ("locking/refcount:
      Create unchecked atomic_t implementation"))
    
    2. ARCH_HAS_REFCOUNT
    
    - refcount_t overflow detection can be optimized
      via an arch-dependent way.
    - It is based on atomic_t infrastructure
      with some instruction added for detection.
    - It is faster than REFCOUNT_FULL,
      as fast as unprotected atomic_t infrastructure.
    - (7a46ec0e ("locking/refcounts, x86/asm:
      Implement fast refcount overflow protection"))
    
    ARCH_HAS_REFCOUNT has implemented for x86,
    not implemented for others.
    
    In the case of arm64,
    Will Deacon said he didn't want the specialized
    "fast but technically incomplete" refcounting as seen with x86's.
    
    But rather to set REFCOUNT_FULL by default
    because no one could point to real-world performance impacts with
    REFCOUNT_FULL vs unprotected atomic_t infrastructure.
    
    This is the reason arm64 ended up enabling REFCOUNT_FULL.
    (4adcec11
    
     ("arm64: Always use REFCOUNT_FULL"))
    
    As with the decision of arm64,
    arm can set REFCOUNT_FULL by default.
    
    Acked-by: default avatarKees Cook <keescook@chromium.org>
    Signed-off-by: default avatarJinbum Park <jinb.park7@gmail.com>
    Signed-off-by: default avatarRussell King <rmk+kernel@armlinux.org.uk>
    b26d07a0