[IA64] Fix rwsem: RWSEM_WAITING_BIAS must not be unsigned.
authorTony Luck <tony.luck@intel.com>
Thu, 12 Aug 2010 16:14:56 +0000 (09:14 -0700)
committerTony Luck <tony.luck@intel.com>
Thu, 12 Aug 2010 16:14:56 +0000 (09:14 -0700)
Some nice improvements were made to rwsem in commit:

 424acaaeb3a3932d64a9b4bd59df6cf72c22d8f3
 rwsem: wake queued readers when writer blocks on active read lock

but this change overlooked that ia64 had defined RWSEM_WAITING_BIAS
as an unsigned value, while the new code required a signed value (as
it is in every other architecture).

This fix suggested by the original patch author: Michel Lespinasse.

Signed-off-by: Tony Luck <tony.luck@intel.com>
arch/ia64/include/asm/rwsem.h

index e876268..215d545 100644 (file)
@@ -40,9 +40,9 @@ struct rw_semaphore {
 };
 
 #define RWSEM_UNLOCKED_VALUE           __IA64_UL_CONST(0x0000000000000000)
-#define RWSEM_ACTIVE_BIAS              __IA64_UL_CONST(0x0000000000000001)
-#define RWSEM_ACTIVE_MASK              __IA64_UL_CONST(0x00000000ffffffff)
-#define RWSEM_WAITING_BIAS             -__IA64_UL_CONST(0x0000000100000000)
+#define RWSEM_ACTIVE_BIAS              (1L)
+#define RWSEM_ACTIVE_MASK              (0xffffffffL)
+#define RWSEM_WAITING_BIAS             (-0x100000000L)
 #define RWSEM_ACTIVE_READ_BIAS         RWSEM_ACTIVE_BIAS
 #define RWSEM_ACTIVE_WRITE_BIAS                (RWSEM_WAITING_BIAS + RWSEM_ACTIVE_BIAS)