• Benjamin Herrenschmidt's avatar
    powerpc: Make rwsem use "long" type · 529b7307
    Benjamin Herrenschmidt authored
    This makes the 64-bit kernel use 64-bit signed integers for the counter
    (effectively supporting 32-bit of active count in the semaphore), thus
    avoiding things like overflow of the mmap_sem if you use a really crazy
    number of threads
    
    Note: Ideally the type in the structure should be atomic_long_t rather
    than "long". However, there's some nasty issues with that. It needs to
    be initialized statically -and- lib/rwsem.c does things like
    
            sem->count = RWSEM_UNLOCKED_VALUE;
    
    Now, if you mix in the fact that atomic_* types are actually structures
    with one member and note typedefs of a scalar, it makes its really nasty.
    
    So I stuck to what we did before using a long and casts for now.
    Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
    529b7307
rwsem.h 4.16 KB