diff options
| author | Kukkonen Mika <mika.kukkonen@nokia.com> | 2008-12-02 04:32:49 -0500 |
|---|---|---|
| committer | Artem Bityutskiy <Artem.Bityutskiy@nokia.com> | 2008-12-03 06:14:11 -0500 |
| commit | 5dd7cbc083f3a91fa7454125fe992826701b67bc (patch) | |
| tree | db21827920cd91fd4da1115f1eea3bb99eca38b4 | |
| parent | 553dea4dd531562688ba01c641c7f8fc7abaaf8c (diff) | |
UBIFS: avoid unnecessary checks
I have a habit of compiling kernel with
EXTRA_CFLAGS="-Wextra -Wno-unused -Wno-sign-compare -Wno-missing-field-initializers"
and so fs/ubifs/key.h give lots (~10) of these every time:
CC fs/ubifs/tnc_misc.o
In file included from fs/ubifs/ubifs.h:1725,
from fs/ubifs/tnc_misc.c:30:
fs/ubifs/key.h: In function 'key_r5_hash':
fs/ubifs/key.h:64: warning: comparison of unsigned expression >= 0 is always true
fs/ubifs/key.h: In function 'key_test_hash':
fs/ubifs/key.h:81: warning: comparison of unsigned expression >= 0 is always true
This patch fixes the warnings.
Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
| -rw-r--r-- | fs/ubifs/key.h | 32 |
1 files changed, 18 insertions, 14 deletions
diff --git a/fs/ubifs/key.h b/fs/ubifs/key.h index 3f1f16bc25c9..efb3430a2581 100644 --- a/fs/ubifs/key.h +++ b/fs/ubifs/key.h | |||
| @@ -38,6 +38,22 @@ | |||
| 38 | #define __UBIFS_KEY_H__ | 38 | #define __UBIFS_KEY_H__ |
| 39 | 39 | ||
| 40 | /** | 40 | /** |
| 41 | * key_mask_hash - mask a valid hash value. | ||
| 42 | * @val: value to be masked | ||
| 43 | * | ||
| 44 | * We use hash values as offset in directories, so values %0 and %1 are | ||
| 45 | * reserved for "." and "..". %2 is reserved for "end of readdir" marker. This | ||
| 46 | * function makes sure the reserved values are not used. | ||
| 47 | */ | ||
| 48 | static inline uint32_t key_mask_hash(uint32_t hash) | ||
| 49 | { | ||
| 50 | hash &= UBIFS_S_KEY_HASH_MASK; | ||
| 51 | if (unlikely(hash <= 2)) | ||
| 52 | hash += 3; | ||
| 53 | return hash; | ||
| 54 | } | ||
| 55 | |||
| 56 | /** | ||
| 41 | * key_r5_hash - R5 hash function (borrowed from reiserfs). | 57 | * key_r5_hash - R5 hash function (borrowed from reiserfs). |
| 42 | * @s: direntry name | 58 | * @s: direntry name |
| 43 | * @len: name length | 59 | * @len: name length |
| @@ -54,16 +70,7 @@ static inline uint32_t key_r5_hash(const char *s, int len) | |||
| 54 | str++; | 70 | str++; |
| 55 | } | 71 | } |
| 56 | 72 | ||
| 57 | a &= UBIFS_S_KEY_HASH_MASK; | 73 | return key_mask_hash(a); |
| 58 | |||
| 59 | /* | ||
| 60 | * We use hash values as offset in directories, so values %0 and %1 are | ||
| 61 | * reserved for "." and "..". %2 is reserved for "end of readdir" | ||
| 62 | * marker. | ||
| 63 | */ | ||
| 64 | if (unlikely(a >= 0 && a <= 2)) | ||
| 65 | a += 3; | ||
| 66 | return a; | ||
| 67 | } | 74 | } |
| 68 | 75 | ||
| 69 | /** | 76 | /** |
| @@ -77,10 +84,7 @@ static inline uint32_t key_test_hash(const char *str, int len) | |||
| 77 | 84 | ||
| 78 | len = min_t(uint32_t, len, 4); | 85 | len = min_t(uint32_t, len, 4); |
| 79 | memcpy(&a, str, len); | 86 | memcpy(&a, str, len); |
| 80 | a &= UBIFS_S_KEY_HASH_MASK; | 87 | return key_mask_hash(a); |
| 81 | if (unlikely(a >= 0 && a <= 2)) | ||
| 82 | a += 3; | ||
| 83 | return a; | ||
| 84 | } | 88 | } |
| 85 | 89 | ||
| 86 | /** | 90 | /** |
