dcache: allow word-at-a-time name hashing with big-endian CPUs
When explicitly hashing the end of a string with the word-at-a-time interface, we have to be careful which end of the word we pick up. On big-endian CPUs, the upper-bits will contain the data we're after, so ensure we generate our masks accordingly (and avoid hashing whatever random junk may have been sitting after the string). This patch adds a new dcache helper, bytemask_from_count, which creates a mask appropriate for the CPU endianness. Cc: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: Will Deacon <will.deacon@arm.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:

committed by
Linus Torvalds

parent
319720f534
commit
a5c21dcefa
@@ -192,7 +192,7 @@ static inline int dentry_string_cmp(const unsigned char *cs, const unsigned char
|
||||
if (!tcount)
|
||||
return 0;
|
||||
}
|
||||
mask = ~(~0ul << tcount*8);
|
||||
mask = bytemask_from_count(tcount);
|
||||
return unlikely(!!((a ^ b) & mask));
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user