Commit f157853e authored by Fabian Frederick's avatar Fabian Frederick Committed by Linus Torvalds

fs/affs: define AFFSNAMEMAX to replace constant use

30 was used all over the place to compare name length against
AFFS maximum name length.
Signed-off-by: default avatarFabian Frederick <fabf@skynet.be>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent eeb36f8e
...@@ -30,6 +30,8 @@ ...@@ -30,6 +30,8 @@
#define AFFS_AC_SIZE (AFFS_CACHE_SIZE/sizeof(struct affs_ext_key)/2) #define AFFS_AC_SIZE (AFFS_CACHE_SIZE/sizeof(struct affs_ext_key)/2)
#define AFFS_AC_MASK (AFFS_AC_SIZE-1) #define AFFS_AC_MASK (AFFS_AC_SIZE-1)
#define AFFSNAMEMAX 30U
struct affs_ext_key { struct affs_ext_key {
u32 ext; /* idx of the extended block */ u32 ext; /* idx of the extended block */
u32 key; /* block number */ u32 key; /* block number */
......
...@@ -483,11 +483,11 @@ affs_check_name(const unsigned char *name, int len, bool notruncate) ...@@ -483,11 +483,11 @@ affs_check_name(const unsigned char *name, int len, bool notruncate)
{ {
int i; int i;
if (len > 30) { if (len > AFFSNAMEMAX) {
if (notruncate) if (notruncate)
return -ENAMETOOLONG; return -ENAMETOOLONG;
else else
len = 30; len = AFFSNAMEMAX;
} }
for (i = 0; i < len; i++) { for (i = 0; i < len; i++) {
if (name[i] < ' ' || name[i] == ':' if (name[i] < ' ' || name[i] == ':'
...@@ -508,7 +508,7 @@ affs_check_name(const unsigned char *name, int len, bool notruncate) ...@@ -508,7 +508,7 @@ affs_check_name(const unsigned char *name, int len, bool notruncate)
int int
affs_copy_name(unsigned char *bstr, struct dentry *dentry) affs_copy_name(unsigned char *bstr, struct dentry *dentry)
{ {
u32 len = min(dentry->d_name.len, 30u); u32 len = min(dentry->d_name.len, AFFSNAMEMAX);
*bstr++ = len; *bstr++ = len;
memcpy(bstr, dentry->d_name.name, len); memcpy(bstr, dentry->d_name.name, len);
......
...@@ -114,7 +114,8 @@ affs_readdir(struct file *file, struct dir_context *ctx) ...@@ -114,7 +114,8 @@ affs_readdir(struct file *file, struct dir_context *ctx)
break; break;
} }
namelen = min(AFFS_TAIL(sb, fh_bh)->name[0], (u8)30); namelen = min(AFFS_TAIL(sb, fh_bh)->name[0],
(u8)AFFSNAMEMAX);
name = AFFS_TAIL(sb, fh_bh)->name + 1; name = AFFS_TAIL(sb, fh_bh)->name + 1;
pr_debug("readdir(): dir_emit(\"%.*s\", ino=%u), hash=%d, f_pos=%llx\n", pr_debug("readdir(): dir_emit(\"%.*s\", ino=%u), hash=%d, f_pos=%llx\n",
namelen, name, ino, hash_pos, ctx->pos); namelen, name, ino, hash_pos, ctx->pos);
......
...@@ -72,7 +72,7 @@ __affs_hash_dentry(struct qstr *qstr, toupper_t toupper, bool notruncate) ...@@ -72,7 +72,7 @@ __affs_hash_dentry(struct qstr *qstr, toupper_t toupper, bool notruncate)
return retval; return retval;
hash = init_name_hash(); hash = init_name_hash();
len = min(qstr->len, 30u); len = min(qstr->len, AFFSNAMEMAX);
for (; len > 0; name++, len--) for (; len > 0; name++, len--)
hash = partial_name_hash(toupper(*name), hash); hash = partial_name_hash(toupper(*name), hash);
qstr->hash = end_name_hash(hash); qstr->hash = end_name_hash(hash);
...@@ -115,10 +115,10 @@ static inline int __affs_compare_dentry(unsigned int len, ...@@ -115,10 +115,10 @@ static inline int __affs_compare_dentry(unsigned int len,
* If the names are longer than the allowed 30 chars, * If the names are longer than the allowed 30 chars,
* the excess is ignored, so their length may differ. * the excess is ignored, so their length may differ.
*/ */
if (len >= 30) { if (len >= AFFSNAMEMAX) {
if (name->len < 30) if (name->len < AFFSNAMEMAX)
return 1; return 1;
len = 30; len = AFFSNAMEMAX;
} else if (len != name->len) } else if (len != name->len)
return 1; return 1;
...@@ -157,10 +157,10 @@ affs_match(struct dentry *dentry, const u8 *name2, toupper_t toupper) ...@@ -157,10 +157,10 @@ affs_match(struct dentry *dentry, const u8 *name2, toupper_t toupper)
const u8 *name = dentry->d_name.name; const u8 *name = dentry->d_name.name;
int len = dentry->d_name.len; int len = dentry->d_name.len;
if (len >= 30) { if (len >= AFFSNAMEMAX) {
if (*name2 < 30) if (*name2 < AFFSNAMEMAX)
return 0; return 0;
len = 30; len = AFFSNAMEMAX;
} else if (len != *name2) } else if (len != *name2)
return 0; return 0;
...@@ -176,7 +176,7 @@ affs_hash_name(struct super_block *sb, const u8 *name, unsigned int len) ...@@ -176,7 +176,7 @@ affs_hash_name(struct super_block *sb, const u8 *name, unsigned int len)
toupper_t toupper = affs_get_toupper(sb); toupper_t toupper = affs_get_toupper(sb);
u32 hash; u32 hash;
hash = len = min(len, 30u); hash = len = min(len, AFFSNAMEMAX);
for (; len > 0; len--) for (; len > 0; len--)
hash = (hash * 13 + toupper(*name++)) & 0x7ff; hash = (hash * 13 + toupper(*name++)) & 0x7ff;
......
...@@ -584,7 +584,7 @@ affs_statfs(struct dentry *dentry, struct kstatfs *buf) ...@@ -584,7 +584,7 @@ affs_statfs(struct dentry *dentry, struct kstatfs *buf)
buf->f_bavail = free; buf->f_bavail = free;
buf->f_fsid.val[0] = (u32)id; buf->f_fsid.val[0] = (u32)id;
buf->f_fsid.val[1] = (u32)(id >> 32); buf->f_fsid.val[1] = (u32)(id >> 32);
buf->f_namelen = 30; buf->f_namelen = AFFSNAMEMAX;
return 0; return 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment