From 4a691cedc74bb42f05f7c5e428064c183abe53f2 Mon Sep 17 00:00:00 2001
From: bwzhou <bwzhou>
Date: Tue, 24 Jun 2008 16:15:36 +0000
Subject: [PATCH] Branch HEAD b=13285 r=adilger, bobijam (cid-1579)   johann, 
 deen    (cid-1613)   johann,  bobijam (cid-1685)

Coverity bugs
---
 libcfs/include/libcfs/kp30.h |  6 +++---
 lustre/tests/openfile.c      | 34 ++++++++++++++++++++++------------
 lustre/utils/lfs.c           | 14 ++++++++++++--
 3 files changed, 37 insertions(+), 17 deletions(-)

diff --git a/libcfs/include/libcfs/kp30.h b/libcfs/include/libcfs/kp30.h
index 0869f67bc1..dcd599b7be 100644
--- a/libcfs/include/libcfs/kp30.h
+++ b/libcfs/include/libcfs/kp30.h
@@ -163,13 +163,13 @@ do {                                                                    \
                        "%s:%d\n", s, __FILE__, __LINE__);               \
                 break;                                                  \
         }                                                               \
+        libcfs_kmem_dec((ptr), s);                                      \
+        CDEBUG(D_MALLOC, "kfreed '" #ptr "': %d at %p (tot %d).\n",     \
+               s, (ptr), atomic_read(&libcfs_kmemory));                 \
         if (unlikely(s > LIBCFS_VMALLOC_SIZE))                          \
                 cfs_free_large(ptr);                                    \
         else                                                            \
                 cfs_free(ptr);                                          \
-        libcfs_kmem_dec((ptr), s);                                      \
-        CDEBUG(D_MALLOC, "kfreed '" #ptr "': %d at %p (tot %d).\n",     \
-               s, (ptr), atomic_read(&libcfs_kmemory));                 \
 } while (0)
 
 /******************************************************************************/
diff --git a/lustre/tests/openfile.c b/lustre/tests/openfile.c
index 66aba74689..0349134863 100644
--- a/lustre/tests/openfile.c
+++ b/lustre/tests/openfile.c
@@ -63,9 +63,9 @@ int main(int argc, char** argv)
         char*  fname=NULL;
         int    mode_set=0;
         int    flag_set=0;
-        int    file_set=0;
         int    c;
         int    save_errno;
+        int    print_usage=0;
         char*  cloned_flags = NULL;
 
         if (argc == 1)
@@ -79,7 +79,8 @@ int main(int argc, char** argv)
                         cloned_flags = (char *)malloc(strlen(optarg)+1);
                         if (cloned_flags == NULL) {
                                 fprintf(stderr, "Insufficient memory.\n");
-                                exit(-1);
+                                save_errno = -1;
+                                goto out;
                         }
 
                         strncpy(cloned_flags, optarg, strlen(optarg)+1);
@@ -110,10 +111,10 @@ int main(int argc, char** argv)
                                 if (flag_table[i].flag == -1) {
                                         fprintf(stderr, "No such flag: %s\n",
                                                 tmp);
-                                        exit(-1);
+                                        save_errno = -1;
+                                        goto out;
                                 }
                         }
-                        free(cloned_flags);
 #ifdef DEBUG
                         printf("flags = %x\n", flags);
 #endif
@@ -131,21 +132,23 @@ int main(int argc, char** argv)
                         break;
                 default:
                         fprintf(stderr, "Bad parameters.\n");
-                        Usage_and_abort();
+                        print_usage = 1;
+                        goto out;
                 }
         }
 
         if (optind == argc) {
                 fprintf(stderr, "Bad parameters.\n");
-                Usage_and_abort();
+                print_usage = 1;
+                goto out;
         }
 
         fname = argv[optind];
-        file_set = 1;
 
-        if (!flag_set || !file_set) {
+        if (!flag_set) {
                 fprintf(stderr, "Missing flag or file-name\n");
-                exit(-1);
+                save_errno = -1;
+                goto out;
         }
 
 
@@ -164,14 +167,21 @@ int main(int argc, char** argv)
                         printf(", mode=%o", mode);
                 printf(")\n");
                 close(fd);
-                return 0;
+        } else {
+                fprintf(stderr, "Error in opening file \"%s\"(flags=%s",
+                        fname, cloned_flags);
         }
 
-        fprintf(stderr, "Error in opening file \"%s\"(flags=%s",
-                fname, cloned_flags);
         if (mode_set)
                 fprintf(stderr, ", mode=%o", mode);
         fprintf(stderr, ") %d: %s\n", save_errno, strerror(save_errno));
 
+out:
+        if (cloned_flags)
+                free(cloned_flags);
+        if (print_usage)
+                Usage_and_abort();
+
         return save_errno;
 }
+
diff --git a/lustre/utils/lfs.c b/lustre/utils/lfs.c
index 875860175a..8772c5a0e3 100644
--- a/lustre/utils/lfs.c
+++ b/lustre/utils/lfs.c
@@ -893,7 +893,7 @@ static int lfs_df(int argc, char **argv)
         FILE *fp;
         char *path = NULL;
         struct mntent *mnt = NULL;
-        char mntdir[PATH_MAX] = {'\0'};
+        char *mntdir = NULL;
         int ishow = 0, cooked = 0;
         int c, rc = 0;
 
@@ -920,10 +920,19 @@ static int lfs_df(int argc, char **argv)
                         argv[0], MOUNTED, strerror(errno));
                 return rc;
         }
+
+        if ((mntdir = malloc(PATH_MAX)) == NULL) {
+                fprintf(stderr, "error: cannot allocate %d bytes\n",
+                        PATH_MAX);
+                return -ENOMEM;
+        }
+        memset(mntdir, 0, PATH_MAX);
+
         if (path) {
-                rc = path2mnt(path, fp, mntdir, sizeof(mntdir));
+                rc = path2mnt(path, fp, mntdir, PATH_MAX);
                 if (rc) {
                         endmntent(fp);
+                        free(mntdir);
                         return rc;
                 }
 
@@ -944,6 +953,7 @@ static int lfs_df(int argc, char **argv)
                 endmntent(fp);
         }
 
+        free(mntdir);
         return rc;
 }
 
-- 
GitLab