[PATCH V3 10/7] Orangefs: address problems found by static checker

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



From: Mike Marshall <hubcap@xxxxxxxxxxxx>

  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@xxxxxxxxxxxx>
---
 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 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;
 	}
--
1.8.3.1
--
To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [Samba]     [Device Mapper]     [CEPH Development]
  Powered by Linux