mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +02:00 
			
		
		
		
	locking/lockdep: Use __jhash_mix() for iterate_chain_key()
Use __jhash_mix() to mix the class_idx into the class_key. This function provides better mixing than the previously used, home grown mix function. Leave hashing to the professionals :-) Suggested-by: George Spelvin <linux@sciencehorizons.net> Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Cc: Andrew Morton <akpm@linux-foundation.org> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Ingo Molnar <mingo@kernel.org>
This commit is contained in:
		
							parent
							
								
									ed8ebd1d51
								
							
						
					
					
						commit
						dfaaf3fa01
					
				
					 1 changed files with 9 additions and 4 deletions
				
			
		| 
						 | 
					@ -46,6 +46,7 @@
 | 
				
			||||||
#include <linux/gfp.h>
 | 
					#include <linux/gfp.h>
 | 
				
			||||||
#include <linux/kmemcheck.h>
 | 
					#include <linux/kmemcheck.h>
 | 
				
			||||||
#include <linux/random.h>
 | 
					#include <linux/random.h>
 | 
				
			||||||
 | 
					#include <linux/jhash.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <asm/sections.h>
 | 
					#include <asm/sections.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -309,10 +310,14 @@ static struct hlist_head chainhash_table[CHAINHASH_SIZE];
 | 
				
			||||||
 * It's a 64-bit hash, because it's important for the keys to be
 | 
					 * It's a 64-bit hash, because it's important for the keys to be
 | 
				
			||||||
 * unique.
 | 
					 * unique.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
#define iterate_chain_key(key1, key2) \
 | 
					static inline u64 iterate_chain_key(u64 key, u32 idx)
 | 
				
			||||||
	(((key1) << MAX_LOCKDEP_KEYS_BITS) ^ \
 | 
					{
 | 
				
			||||||
	((key1) >> (64-MAX_LOCKDEP_KEYS_BITS)) ^ \
 | 
						u32 k0 = key, k1 = key >> 32;
 | 
				
			||||||
	(key2))
 | 
					
 | 
				
			||||||
 | 
						__jhash_mix(idx, k0, k1); /* Macro that modifies arguments! */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return k0 | (u64)k1 << 32;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void lockdep_off(void)
 | 
					void lockdep_off(void)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue