summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Marshall <hubcap@omnibond.com>2015-07-29 17:36:37 (GMT)
committerMike Marshall <hubcap@omnibond.com>2015-10-03 15:40:03 (GMT)
commiteeaa3d448c5d35ad0dc16a981aacd64139c53eee (patch)
tree113bc05b053812e48a281bfb015b25958fa697e6
parent84d02150dea7571dc32176e35d65eecde82631a9 (diff)
downloadlinux-eeaa3d448c5d35ad0dc16a981aacd64139c53eee.tar.xz
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 <hubcap@omnibond.com>
-rw-r--r--fs/orangefs/dir.c16
-rw-r--r--fs/orangefs/file.c18
-rw-r--r--fs/orangefs/pvfs2-utils.c4
-rw-r--r--fs/orangefs/xattr.c6
4 files changed, 11 insertions, 33 deletions
diff --git a/fs/orangefs/dir.c b/fs/orangefs/dir.c
index 9b5f4bb..c126c0f 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 4ba1b6c..013a07c 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 107f425..8d4411c 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 2766090..227eaa4 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;
}