From eeaa3d448c5d35ad0dc16a981aacd64139c53eee Mon Sep 17 00:00:00 2001 From: Mike Marshall Date: Wed, 29 Jul 2015 13:36:37 -0400 Subject: [PATCH] Orangefs: address problems found by static checker Don't check for negative rc from boolean. Don't pointlessly initialize variables, it short-circuits gcc's uninitialized variable warnings. And max_new_nr_segs can never be zero, so don't check for it. Preserve original kstrdup pointer for freeing later. Don't check for negative value in unsigned variable. Signed-off-by: Mike Marshall --- fs/orangefs/dir.c | 16 ---------------- fs/orangefs/file.c | 18 ++++++------------ fs/orangefs/pvfs2-utils.c | 4 +++- fs/orangefs/xattr.c | 6 ++---- 4 files changed, 11 insertions(+), 33 deletions(-) diff --git a/fs/orangefs/dir.c b/fs/orangefs/dir.c index 9b5f4bb17874..c126c0fc6e0f 100644 --- a/fs/orangefs/dir.c +++ b/fs/orangefs/dir.c @@ -104,7 +104,6 @@ static void readdir_handle_dtor(struct pvfs2_bufmap *bufmap, * * \param dir_emit callback function called for each entry read. * - * \retval <0 on error * \retval 0 when directory has been completely traversed * \retval >0 if we don't call dir_emit for all entries * @@ -253,8 +252,6 @@ get_new_buffer_index: __func__, llu(pos)); ret = dir_emit(ctx, ".", 1, ino, DT_DIR); - if (ret < 0) - goto out_destroy_handle; ctx->pos++; gossip_ldebug(GOSSIP_DIR_DEBUG, "%s: ctx->pos:%lld\n", @@ -270,8 +267,6 @@ get_new_buffer_index: __func__, llu(pos)); ret = dir_emit(ctx, "..", 2, ino, DT_DIR); - if (ret < 0) - goto out_destroy_handle; ctx->pos++; gossip_ldebug(GOSSIP_DIR_DEBUG, "%s: ctx->pos:%lld\n", @@ -293,17 +288,6 @@ get_new_buffer_index: (unsigned long)pos); ret = dir_emit(ctx, current_entry, len, current_ino, DT_UNKNOWN); - if (ret < 0) { - gossip_debug(GOSSIP_DIR_DEBUG, - "dir_emit() failed. ret:%d\n", - ret); - if (i < 2) { - gossip_err("dir_emit failed on one of the first two true PVFS directory entries.\n"); - gossip_err("Duplicate entries may appear.\n"); - } - buffer_full = 1; - break; - } ctx->pos++; gossip_ldebug(GOSSIP_DIR_DEBUG, "%s: ctx->pos:%lld\n", diff --git a/fs/orangefs/file.c b/fs/orangefs/file.c index 4ba1b6c48aa7..013a07c8bdfd 100644 --- a/fs/orangefs/file.c +++ b/fs/orangefs/file.c @@ -463,12 +463,12 @@ static ssize_t do_readv_writev(enum PVFS_io_type type, struct file *file, unsigned int to_free; size_t count; unsigned long seg; - unsigned long new_nr_segs = 0; - unsigned long max_new_nr_segs = 0; - unsigned long seg_count = 0; - unsigned long *seg_array = NULL; - struct iovec *iovecptr = NULL; - struct iovec *ptr = NULL; + unsigned long new_nr_segs; + unsigned long max_new_nr_segs; + unsigned long seg_count; + unsigned long *seg_array; + struct iovec *iovecptr; + struct iovec *ptr; total_count = 0; ret = -EINVAL; @@ -477,12 +477,6 @@ static ssize_t do_readv_writev(enum PVFS_io_type type, struct file *file, /* Compute total and max number of segments after split */ max_new_nr_segs = bound_max_iovecs(iov, nr_segs, &count); - if (max_new_nr_segs < 0) { - gossip_lerr("%s: could not bound iovec %lu\n", - __func__, - max_new_nr_segs); - goto out; - } gossip_debug(GOSSIP_FILE_DEBUG, "%s-BEGIN(%pU): count(%d) after estimate_max_iovecs.\n", diff --git a/fs/orangefs/pvfs2-utils.c b/fs/orangefs/pvfs2-utils.c index 107f425d2e90..8d4411ca118f 100644 --- a/fs/orangefs/pvfs2-utils.c +++ b/fs/orangefs/pvfs2-utils.c @@ -1077,6 +1077,7 @@ void debug_string_to_mask(char *debug_string, void *mask, int type) char *unchecked_keyword; int i; char *strsep_fodder = kstrdup(debug_string, GFP_KERNEL); + char *original_pointer; int element_count = 0; struct client_debug_mask *c_mask; __u64 *k_mask; @@ -1092,6 +1093,7 @@ void debug_string_to_mask(char *debug_string, void *mask, int type) element_count = num_kmod_keyword_mask_map; } + original_pointer = strsep_fodder; while ((unchecked_keyword = strsep(&strsep_fodder, ","))) if (strlen(unchecked_keyword)) { for (i = 0; i < element_count; i++) @@ -1105,7 +1107,7 @@ void debug_string_to_mask(char *debug_string, void *mask, int type) &k_mask); } - kfree(strsep_fodder); + kfree(original_pointer); } void do_c_mask(int i, diff --git a/fs/orangefs/xattr.c b/fs/orangefs/xattr.c index 2766090f5ca4..227eaa47b1e1 100644 --- a/fs/orangefs/xattr.c +++ b/fs/orangefs/xattr.c @@ -77,10 +77,8 @@ ssize_t pvfs2_inode_getxattr(struct inode *inode, const char *prefix, gossip_err("pvfs2_inode_getxattr: bogus NULL pointers\n"); return -EINVAL; } - if (size < 0 || - (strlen(name) + strlen(prefix)) >= PVFS_MAX_XATTR_NAMELEN) { - gossip_err("Invalid size (%d) or key length (%d)\n", - (int)size, + if ((strlen(name) + strlen(prefix)) >= PVFS_MAX_XATTR_NAMELEN) { + gossip_err("Invalid key length (%d)\n", (int)(strlen(name) + strlen(prefix))); return -EINVAL; }