]> git.baikalelectronics.ru Git - kernel.git/commit
powerpc: Make rwsem use "long" type
authorBenjamin Herrenschmidt <benh@kernel.crashing.org>
Tue, 24 Aug 2010 04:41:48 +0000 (14:41 +1000)
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>
Tue, 24 Aug 2010 04:41:48 +0000 (14:41 +1000)
commit8dddab0435da57b13d2ae9dba6dc6c5849121b1c
tree1fb7edf7770e27d1e596a1d0aa2a64c1b986938d
parenteb5df123bf4a6838aa09137780438bb6c0bfed31
powerpc: Make rwsem use "long" type

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: Benjamin Herrenschmidt <benh@kernel.crashing.org>
arch/powerpc/include/asm/rwsem.h