LKML Archive on lore.kernel.org help / color / mirror / Atom feed
* [PATCH v2 1/6 linux-next] FS/AFFS: use unsigned int for string lengths @ 2015-02-05 19:05 Fabian Frederick 2015-02-05 19:05 ` [PATCH v2 2/6 linux-next] define AFFSNAMEMAX to replace constant use Fabian Frederick ` (4 more replies) 0 siblings, 5 replies; 6+ messages in thread From: Fabian Frederick @ 2015-02-05 19:05 UTC (permalink / raw) To: linux-kernel; +Cc: Fabian Frederick, Andrew Morton -Some min() were used with different types. -Create a new variable in __affs_hash_dentry() to process affs_check_name()/min() return Cc: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Fabian Frederick <fabf@skynet.be> --- v2: min() variables uniformization (suggested by Andrew Morton) fs/affs/amigaffs.c | 2 +- fs/affs/namei.c | 15 ++++++++------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/fs/affs/amigaffs.c b/fs/affs/amigaffs.c index 511ab6b..0836f6f 100644 --- a/fs/affs/amigaffs.c +++ b/fs/affs/amigaffs.c @@ -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) { - int len = min(dentry->d_name.len, 30u); + u32 len = min(dentry->d_name.len, 30u); *bstr++ = len; memcpy(bstr, dentry->d_name.name, len); diff --git a/fs/affs/namei.c b/fs/affs/namei.c index de84f4d..66c6cb3 100644 --- a/fs/affs/namei.c +++ b/fs/affs/namei.c @@ -64,15 +64,16 @@ __affs_hash_dentry(struct qstr *qstr, toupper_t toupper, bool notruncate) { const u8 *name = qstr->name; unsigned long hash; - int i; + int retval; + u32 len; - i = affs_check_name(qstr->name, qstr->len, notruncate); - if (i) - return i; + retval = affs_check_name(qstr->name, qstr->len, notruncate); + if (retval) + return retval; hash = init_name_hash(); - i = min(qstr->len, 30u); - for (; i > 0; name++, i--) + len = min(qstr->len, 30u); + for (; len > 0; name++, len--) hash = partial_name_hash(toupper(*name), hash); qstr->hash = end_name_hash(hash); @@ -173,7 +174,7 @@ int affs_hash_name(struct super_block *sb, const u8 *name, unsigned int len) { toupper_t toupper = affs_get_toupper(sb); - int hash; + u32 hash; hash = len = min(len, 30u); for (; len > 0; len--) -- 2.1.0 ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v2 2/6 linux-next] define AFFSNAMEMAX to replace constant use 2015-02-05 19:05 [PATCH v2 1/6 linux-next] FS/AFFS: use unsigned int for string lengths Fabian Frederick @ 2015-02-05 19:05 ` Fabian Frederick 2015-02-05 19:05 ` [PATCH v2 3/6 linux-next] fs/affs/amigaffs.c: remove else after return Fabian Frederick ` (3 subsequent siblings) 4 siblings, 0 replies; 6+ messages in thread From: Fabian Frederick @ 2015-02-05 19:05 UTC (permalink / raw) To: linux-kernel; +Cc: Fabian Frederick, Andrew Morton 30 was used all over the place to compare name length against AFFS maximum name length. Cc: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Fabian Frederick <fabf@skynet.be> --- v2: use 30U instead of 30 to solve min() interpretation (suggested by Andrew Morton) fs/affs/affs.h | 2 ++ fs/affs/amigaffs.c | 6 +++--- fs/affs/dir.c | 3 ++- fs/affs/namei.c | 16 ++++++++-------- fs/affs/super.c | 2 +- 5 files changed, 16 insertions(+), 13 deletions(-) diff --git a/fs/affs/affs.h b/fs/affs/affs.h index ff44ff3..c8764bd 100644 --- a/fs/affs/affs.h +++ b/fs/affs/affs.h @@ -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 */ diff --git a/fs/affs/amigaffs.c b/fs/affs/amigaffs.c index 0836f6f..118d782 100644 --- a/fs/affs/amigaffs.c +++ b/fs/affs/amigaffs.c @@ -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); diff --git a/fs/affs/dir.c b/fs/affs/dir.c index a682892..ac4f318 100644 --- a/fs/affs/dir.c +++ b/fs/affs/dir.c @@ -114,7 +114,8 @@ inside: 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); diff --git a/fs/affs/namei.c b/fs/affs/namei.c index 66c6cb3..ffb7bd8 100644 --- a/fs/affs/namei.c +++ b/fs/affs/namei.c @@ -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; diff --git a/fs/affs/super.c b/fs/affs/super.c index ee8eca7..c3524bf 100644 --- a/fs/affs/super.c +++ b/fs/affs/super.c @@ -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; } -- 2.1.0 ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v2 3/6 linux-next] fs/affs/amigaffs.c: remove else after return 2015-02-05 19:05 [PATCH v2 1/6 linux-next] FS/AFFS: use unsigned int for string lengths Fabian Frederick 2015-02-05 19:05 ` [PATCH v2 2/6 linux-next] define AFFSNAMEMAX to replace constant use Fabian Frederick @ 2015-02-05 19:05 ` Fabian Frederick 2015-02-05 19:05 ` [PATCH v2 4/6 linux-next] fs/affs/bitmap.c: remove unnecessary return Fabian Frederick ` (2 subsequent siblings) 4 siblings, 0 replies; 6+ messages in thread From: Fabian Frederick @ 2015-02-05 19:05 UTC (permalink / raw) To: linux-kernel; +Cc: Fabian Frederick, Andrew Morton else is unnecessary after return -ENAMETOOLONG Cc: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Fabian Frederick <fabf@skynet.be> --- fs/affs/amigaffs.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/fs/affs/amigaffs.c b/fs/affs/amigaffs.c index 118d782..388da1e 100644 --- a/fs/affs/amigaffs.c +++ b/fs/affs/amigaffs.c @@ -486,8 +486,7 @@ affs_check_name(const unsigned char *name, int len, bool notruncate) if (len > AFFSNAMEMAX) { if (notruncate) return -ENAMETOOLONG; - else - len = AFFSNAMEMAX; + len = AFFSNAMEMAX; } for (i = 0; i < len; i++) { if (name[i] < ' ' || name[i] == ':' -- 2.1.0 ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v2 4/6 linux-next] fs/affs/bitmap.c: remove unnecessary return 2015-02-05 19:05 [PATCH v2 1/6 linux-next] FS/AFFS: use unsigned int for string lengths Fabian Frederick 2015-02-05 19:05 ` [PATCH v2 2/6 linux-next] define AFFSNAMEMAX to replace constant use Fabian Frederick 2015-02-05 19:05 ` [PATCH v2 3/6 linux-next] fs/affs/amigaffs.c: remove else after return Fabian Frederick @ 2015-02-05 19:05 ` Fabian Frederick 2015-02-05 19:05 ` [PATCH v2 5/6 linux-next] fs/affs/inode.c: remove double extern affs_symlink_inode_operations Fabian Frederick 2015-02-05 19:05 ` [PATCH v2 6/6 linux-next] fs/affs/super.c: fix switch indentation Fabian Frederick 4 siblings, 0 replies; 6+ messages in thread From: Fabian Frederick @ 2015-02-05 19:05 UTC (permalink / raw) To: linux-kernel; +Cc: Fabian Frederick, Andrew Morton return is not needed at the end of function. Cc: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Fabian Frederick <fabf@skynet.be> --- fs/affs/bitmap.c | 1 - 1 file changed, 1 deletion(-) diff --git a/fs/affs/bitmap.c b/fs/affs/bitmap.c index c8de511..6751489 100644 --- a/fs/affs/bitmap.c +++ b/fs/affs/bitmap.c @@ -99,7 +99,6 @@ err_bh_read: err_range: affs_error(sb, "affs_free_block","Block %u outside partition", block); - return; } /* -- 2.1.0 ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v2 5/6 linux-next] fs/affs/inode.c: remove double extern affs_symlink_inode_operations 2015-02-05 19:05 [PATCH v2 1/6 linux-next] FS/AFFS: use unsigned int for string lengths Fabian Frederick ` (2 preceding siblings ...) 2015-02-05 19:05 ` [PATCH v2 4/6 linux-next] fs/affs/bitmap.c: remove unnecessary return Fabian Frederick @ 2015-02-05 19:05 ` Fabian Frederick 2015-02-05 19:05 ` [PATCH v2 6/6 linux-next] fs/affs/super.c: fix switch indentation Fabian Frederick 4 siblings, 0 replies; 6+ messages in thread From: Fabian Frederick @ 2015-02-05 19:05 UTC (permalink / raw) To: linux-kernel; +Cc: Fabian Frederick, Andrew Morton affs_symlink_inode_operations was already declared extern in affs.h Cc: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Fabian Frederick <fabf@skynet.be> --- fs/affs/inode.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/fs/affs/inode.c b/fs/affs/inode.c index 25cb4b4..6f34510 100644 --- a/fs/affs/inode.c +++ b/fs/affs/inode.c @@ -13,8 +13,6 @@ #include <linux/gfp.h> #include "affs.h" -extern const struct inode_operations affs_symlink_inode_operations; - struct inode *affs_iget(struct super_block *sb, unsigned long ino) { struct affs_sb_info *sbi = AFFS_SB(sb); -- 2.1.0 ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v2 6/6 linux-next] fs/affs/super.c: fix switch indentation 2015-02-05 19:05 [PATCH v2 1/6 linux-next] FS/AFFS: use unsigned int for string lengths Fabian Frederick ` (3 preceding siblings ...) 2015-02-05 19:05 ` [PATCH v2 5/6 linux-next] fs/affs/inode.c: remove double extern affs_symlink_inode_operations Fabian Frederick @ 2015-02-05 19:05 ` Fabian Frederick 4 siblings, 0 replies; 6+ messages in thread From: Fabian Frederick @ 2015-02-05 19:05 UTC (permalink / raw) To: linux-kernel; +Cc: Fabian Frederick, Andrew Morton Fix checkpatch error: ERROR: switch and case should be at the same indent Cc: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Fabian Frederick <fabf@skynet.be> --- fs/affs/super.c | 66 ++++++++++++++++++++++++++++----------------------------- 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/fs/affs/super.c b/fs/affs/super.c index c3524bf..4cf0e91 100644 --- a/fs/affs/super.c +++ b/fs/affs/super.c @@ -432,39 +432,39 @@ got_root: sb->s_flags |= MS_RDONLY; } switch (chksum) { - case MUFS_FS: - case MUFS_INTLFFS: - case MUFS_DCFFS: - sbi->s_flags |= SF_MUFS; - /* fall thru */ - case FS_INTLFFS: - case FS_DCFFS: - sbi->s_flags |= SF_INTL; - break; - case MUFS_FFS: - sbi->s_flags |= SF_MUFS; - break; - case FS_FFS: - break; - case MUFS_OFS: - sbi->s_flags |= SF_MUFS; - /* fall thru */ - case FS_OFS: - sbi->s_flags |= SF_OFS; - sb->s_flags |= MS_NOEXEC; - break; - case MUFS_DCOFS: - case MUFS_INTLOFS: - sbi->s_flags |= SF_MUFS; - case FS_DCOFS: - case FS_INTLOFS: - sbi->s_flags |= SF_INTL | SF_OFS; - sb->s_flags |= MS_NOEXEC; - break; - default: - pr_err("Unknown filesystem on device %s: %08X\n", - sb->s_id, chksum); - return -EINVAL; + case MUFS_FS: + case MUFS_INTLFFS: + case MUFS_DCFFS: + sbi->s_flags |= SF_MUFS; + /* fall thru */ + case FS_INTLFFS: + case FS_DCFFS: + sbi->s_flags |= SF_INTL; + break; + case MUFS_FFS: + sbi->s_flags |= SF_MUFS; + break; + case FS_FFS: + break; + case MUFS_OFS: + sbi->s_flags |= SF_MUFS; + /* fall thru */ + case FS_OFS: + sbi->s_flags |= SF_OFS; + sb->s_flags |= MS_NOEXEC; + break; + case MUFS_DCOFS: + case MUFS_INTLOFS: + sbi->s_flags |= SF_MUFS; + case FS_DCOFS: + case FS_INTLOFS: + sbi->s_flags |= SF_INTL | SF_OFS; + sb->s_flags |= MS_NOEXEC; + break; + default: + pr_err("Unknown filesystem on device %s: %08X\n", + sb->s_id, chksum); + return -EINVAL; } if (mount_flags & SF_VERBOSE) { -- 2.1.0 ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2015-02-05 19:06 UTC | newest] Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2015-02-05 19:05 [PATCH v2 1/6 linux-next] FS/AFFS: use unsigned int for string lengths Fabian Frederick 2015-02-05 19:05 ` [PATCH v2 2/6 linux-next] define AFFSNAMEMAX to replace constant use Fabian Frederick 2015-02-05 19:05 ` [PATCH v2 3/6 linux-next] fs/affs/amigaffs.c: remove else after return Fabian Frederick 2015-02-05 19:05 ` [PATCH v2 4/6 linux-next] fs/affs/bitmap.c: remove unnecessary return Fabian Frederick 2015-02-05 19:05 ` [PATCH v2 5/6 linux-next] fs/affs/inode.c: remove double extern affs_symlink_inode_operations Fabian Frederick 2015-02-05 19:05 ` [PATCH v2 6/6 linux-next] fs/affs/super.c: fix switch indentation Fabian Frederick
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).