forked from luck/tmp_suning_uos_patched
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: Fabian Frederick <fabf@skynet.be> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
eeb36f8e93
commit
f157853e40
|
@ -30,6 +30,8 @@
|
|||
#define AFFS_AC_SIZE (AFFS_CACHE_SIZE/sizeof(struct affs_ext_key)/2)
|
||||
#define AFFS_AC_MASK (AFFS_AC_SIZE-1)
|
||||
|
||||
#define AFFSNAMEMAX 30U
|
||||
|
||||
struct affs_ext_key {
|
||||
u32 ext; /* idx of the extended block */
|
||||
u32 key; /* block number */
|
||||
|
|
|
@ -483,11 +483,11 @@ affs_check_name(const unsigned char *name, int len, bool notruncate)
|
|||
{
|
||||
int i;
|
||||
|
||||
if (len > 30) {
|
||||
if (len > AFFSNAMEMAX) {
|
||||
if (notruncate)
|
||||
return -ENAMETOOLONG;
|
||||
else
|
||||
len = 30;
|
||||
len = AFFSNAMEMAX;
|
||||
}
|
||||
for (i = 0; i < len; i++) {
|
||||
if (name[i] < ' ' || name[i] == ':'
|
||||
|
@ -508,7 +508,7 @@ affs_check_name(const unsigned char *name, int len, bool notruncate)
|
|||
int
|
||||
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;
|
||||
memcpy(bstr, dentry->d_name.name, len);
|
||||
|
|
|
@ -114,7 +114,8 @@ affs_readdir(struct file *file, struct dir_context *ctx)
|
|||
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;
|
||||
pr_debug("readdir(): dir_emit(\"%.*s\", ino=%u), hash=%d, f_pos=%llx\n",
|
||||
namelen, name, ino, hash_pos, ctx->pos);
|
||||
|
|
|
@ -72,7 +72,7 @@ __affs_hash_dentry(struct qstr *qstr, toupper_t toupper, bool notruncate)
|
|||
return retval;
|
||||
|
||||
hash = init_name_hash();
|
||||
len = min(qstr->len, 30u);
|
||||
len = min(qstr->len, AFFSNAMEMAX);
|
||||
for (; len > 0; name++, len--)
|
||||
hash = partial_name_hash(toupper(*name), hash);
|
||||
qstr->hash = end_name_hash(hash);
|
||||
|
@ -115,10 +115,10 @@ static inline int __affs_compare_dentry(unsigned int len,
|
|||
* If the names are longer than the allowed 30 chars,
|
||||
* the excess is ignored, so their length may differ.
|
||||
*/
|
||||
if (len >= 30) {
|
||||
if (name->len < 30)
|
||||
if (len >= AFFSNAMEMAX) {
|
||||
if (name->len < AFFSNAMEMAX)
|
||||
return 1;
|
||||
len = 30;
|
||||
len = AFFSNAMEMAX;
|
||||
} else if (len != name->len)
|
||||
return 1;
|
||||
|
||||
|
@ -157,10 +157,10 @@ affs_match(struct dentry *dentry, const u8 *name2, toupper_t toupper)
|
|||
const u8 *name = dentry->d_name.name;
|
||||
int len = dentry->d_name.len;
|
||||
|
||||
if (len >= 30) {
|
||||
if (*name2 < 30)
|
||||
if (len >= AFFSNAMEMAX) {
|
||||
if (*name2 < AFFSNAMEMAX)
|
||||
return 0;
|
||||
len = 30;
|
||||
len = AFFSNAMEMAX;
|
||||
} else if (len != *name2)
|
||||
return 0;
|
||||
|
||||
|
@ -176,7 +176,7 @@ affs_hash_name(struct super_block *sb, const u8 *name, unsigned int len)
|
|||
toupper_t toupper = affs_get_toupper(sb);
|
||||
u32 hash;
|
||||
|
||||
hash = len = min(len, 30u);
|
||||
hash = len = min(len, AFFSNAMEMAX);
|
||||
for (; len > 0; len--)
|
||||
hash = (hash * 13 + toupper(*name++)) & 0x7ff;
|
||||
|
||||
|
|
|
@ -584,7 +584,7 @@ affs_statfs(struct dentry *dentry, struct kstatfs *buf)
|
|||
buf->f_bavail = free;
|
||||
buf->f_fsid.val[0] = (u32)id;
|
||||
buf->f_fsid.val[1] = (u32)(id >> 32);
|
||||
buf->f_namelen = 30;
|
||||
buf->f_namelen = AFFSNAMEMAX;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user