On Tue, Jul 10, 2018 at 03:10:51PM +0900, Tetsuo Handa wrote: > From 2642b4a1904259384f2018ea8df03ac49509c57a Mon Sep 17 00:00:00 2001 > From: Tetsuo Handa <penguin-ker...@i-love.skaura.ne.jp> > Date: Tue, 10 Jul 2018 15:01:20 +0900 > Subject: [PATCH] locking/rwsem: Convert the other sem->count to > 'atomic_long_t' > > Since "locking/rwsem: Convert sem->count to 'atomic_long_t'" forgot to > convert "struct rw_semaphore"->count in linux/rwsem-spinlock.h which is > used when CONFIG_RWSEM_GENERIC_SPINLOCK=y, trying to access it in MIPS > architecture causes build error due to type mismatch. > > error: passing argument 1 of 'atomic_long_read' from incompatible pointer > type [-Werror=incompatible-pointer-types] > note: expected 'const atomic_long_t * {aka const struct <anonymous> *}' but > argument is of type '__s32 * {aka int *}' > > Signed-off-by: Tetsuo Handa <penguin-ker...@i-love.skaura.ne.jp> > Reported-by: kbuild test robot <l...@intel.com> > Fixes: 8ee62b1870be8e63 ("locking/rwsem: Convert sem->count to > 'atomic_long_t'") > Cc: stable <sta...@vger.kernel.org> # v4.8+ > Cc: Jason Low <jason.l...@hpe.com> > Cc: Peter Zijlstra <pet...@infradead.org> > --- > include/linux/rwsem-spinlock.h | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/include/linux/rwsem-spinlock.h b/include/linux/rwsem-spinlock.h > index e475683..1164965 100644 > --- a/include/linux/rwsem-spinlock.h > +++ b/include/linux/rwsem-spinlock.h > @@ -22,7 +22,7 @@ > * - if wait_list is not empty, then there are processes waiting for the > semaphore > */ > struct rw_semaphore { > - __s32 count; > + atomic_long_t count;
Uhhh... how does this even build? rwsem-spinlock.c doesn't use atomic_long primitives to change count. And the atomic_long count usage is completely private to rwsem-xadd.c, nothing outside of that should use that field, ever.