Skip to contentSkip to conversation

spin_lock_*(): Always evaluate second argument

PATCH Superseded Bart Van Assche 2 participants 3 messages Jun 16, 2014 – Jul 22, 2014 Locking primitives

v1 of 3 Superseded Latest is v3 →

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 spin_lock_*(): Always evaluate second argument

Evaluating a macro argument only if certain configuration options have been selected is confusing and error-prone. Hence always evaluate the second argument of spin_lock_nested() and spin_lock_nest_lock().

This patch has the intentional side effect that it avoids that the following warning is reported for netif_addr_lock_nested() when building with CONFIG_DEBUG_LOCK_ALLOC=n and with W=1:

include/linux/netdevice.h: In function 'netif_addr_lock_nested':
include/linux/netdevice.h:2865:6: warning: variable 'subclass' set but not used [-Wunused-but-set-variable]

  int subclass = SINGLE_DEPTH_NESTING;
      ^
Cc Ingo Molnar <[email protected]>
Cc Peter Zijlstra <[email protected]>
Cc David S. Miller <[email protected]>
---
 include/linux/spinlock.h | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)
include/linux/spinlock.h +4 -2
index 3f2867f..32b16cc 100644
@@ -197,8 +197,10 @@ static inline void do_raw_spin_unlock(raw_spinlock_t *lock) __releases(lock)
 		 _raw_spin_lock_nest_lock(lock, &(nest_lock)->dep_map);	\
 	 } while (0)
 #else
-# define raw_spin_lock_nested(lock, subclass)		_raw_spin_lock(lock)
-# define raw_spin_lock_nest_lock(lock, nest_lock)	_raw_spin_lock(lock)
+# define raw_spin_lock_nested(lock, subclass)		\
+	((void)(subclass), _raw_spin_lock(lock))
+# define raw_spin_lock_nest_lock(lock, nest_lock)	\
+	((void)(nest_lock), _raw_spin_lock(lock))
 #endif
 
 #if defined(CONFIG_SMP) || defined(CONFIG_DEBUG_SPINLOCK)
Signature · 1 line
1.8.4.5
Acked-by on v1 1/1
#1 lore raw
Quoted 11 lines · Bart Van Assche

Evaluating a macro argument only if certain configuration options have been selected is confusing and error-prone. Hence always evaluate the second argument of spin_lock_nested() and spin_lock_nest_lock().

This patch has the intentional side effect that it avoids that the following warning is reported for netif_addr_lock_nested() when building with CONFIG_DEBUG_LOCK_ALLOC=n and with W=1:

include/linux/netdevice.h: In function 'netif_addr_lock_nested':
include/linux/netdevice.h:2865:6: warning: variable 'subclass' set but not used [-Wunused-but-set-variable]

Quoted 7 lines
  int subclass = SINGLE_DEPTH_NESTING;
      ^
Cc Ingo Molnar <[email protected]>
Cc Peter Zijlstra <[email protected]>
Cc David S. Miller <[email protected]>
#2 lore raw
In reply to Bart Van Assche
Quoted 11 lines · Bart Van Assche

Evaluating a macro argument only if certain configuration options have been selected is confusing and error-prone. Hence always evaluate the second argument of spin_lock_nested() and spin_lock_nest_lock().

This patch has the intentional side effect that it avoids that the following warning is reported for netif_addr_lock_nested() when building with CONFIG_DEBUG_LOCK_ALLOC=n and with W=1:

include/linux/netdevice.h: In function 'netif_addr_lock_nested':
include/linux/netdevice.h:2865:6: warning: variable 'subclass' set but not used [-Wunused-but-set-variable]

Quoted 7 lines
  int subclass = SINGLE_DEPTH_NESTING;
      ^
Cc Ingo Molnar <[email protected]>
Cc Peter Zijlstra <[email protected]>
Cc David S. Miller <[email protected]>

Bart, could you please resend this patch with my acked-by?