diff options
author | Al Viro <viro@ZenIV.linux.org.uk> | 2012-03-22 17:59:52 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-03-22 18:10:43 -0400 |
commit | f132c5be05e407a99cf582347a2ae0120acd3ad7 (patch) | |
tree | f089bbd244aad5d5686360080f93ee9e8592a39d /fs/namei.c | |
parent | ba331d5decbfe1cc8b1bf10fb7005f4b972c4f0e (diff) |
Fix full_name_hash() behaviour when length is a multiple of 8
We want it to match what hash_name() is doing, which means extra
multiply by 9 in this case...
Reported-and-Tested-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'fs/namei.c')
-rw-r--r-- | fs/namei.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/namei.c b/fs/namei.c index a94a7f9a03ea..bd313d680d34 100644 --- a/fs/namei.c +++ b/fs/namei.c | |||
@@ -1439,10 +1439,10 @@ unsigned int full_name_hash(const unsigned char *name, unsigned int len) | |||
1439 | 1439 | ||
1440 | for (;;) { | 1440 | for (;;) { |
1441 | a = *(unsigned long *)name; | 1441 | a = *(unsigned long *)name; |
1442 | hash *= 9; | ||
1443 | if (len < sizeof(unsigned long)) | 1442 | if (len < sizeof(unsigned long)) |
1444 | break; | 1443 | break; |
1445 | hash += a; | 1444 | hash += a; |
1445 | hash *= 9; | ||
1446 | name += sizeof(unsigned long); | 1446 | name += sizeof(unsigned long); |
1447 | len -= sizeof(unsigned long); | 1447 | len -= sizeof(unsigned long); |
1448 | if (!len) | 1448 | if (!len) |