]> granicus.if.org Git - zfs/commitdiff
Correct cppcheck errors (#6662)
authorGiuseppe Di Natale <dinatale2@users.noreply.github.com>
Wed, 20 Sep 2017 19:59:21 +0000 (12:59 -0700)
committerTony Hutter <hutter2@llnl.gov>
Wed, 20 Sep 2017 19:59:21 +0000 (12:59 -0700)
ZFS buildbot STYLE builder was moved to Ubuntu 17.04
which has a newer version of cppcheck. Handle the
new cppcheck errors.

uu_* functions removed in this commit were unused
and effectively dead code. They are now retired.

Reviewed-by: George Melikov <mail@gmelikov.ru>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Giuseppe Di Natale <dinatale2@llnl.gov>
Closes #6653

.github/suppressions.txt [new file with mode: 0644]
Makefile.am
include/libuutil.h
lib/libuutil/Makefile.am
lib/libuutil/uu_strtoint.c [deleted file]
module/zfs/zfs_vnops.c

diff --git a/.github/suppressions.txt b/.github/suppressions.txt
new file mode 100644 (file)
index 0000000..61a2cd2
--- /dev/null
@@ -0,0 +1,4 @@
+nullPointer:./module/zfs/zfs_vnops.c:839
+preprocessorErrorDirective:./module/zfs/vdev_raidz_math_avx512f.c:243
+preprocessorErrorDirective:./module/zfs/vdev_raidz_math_sse2.c:266
+
index 814998675cd9992369581eff26023ce30cdec3de..b1b7994b7cec36ca4cec601aeb6032105c2f34c6 100644 (file)
@@ -65,8 +65,10 @@ lint: cppcheck paxcheck
 
 cppcheck:
        @if type cppcheck > /dev/null 2>&1; then \
-               cppcheck --inline-suppr --quiet --force --error-exitcode=2 \
-               ${top_srcdir}; \
+               cppcheck --quiet --force --error-exitcode=2 \
+                       --suppressions-list=.github/suppressions.txt \
+                       -UHAVE_SSE2 -UHAVE_AVX512F \
+                       ${top_srcdir}; \
        fi
 
 paxcheck:
index 667542446672a3fe08e1193fe0319e952d2da4f1..71337159a7e0fc0cdbdf0cce7ceec66b383a8b8b 100644 (file)
@@ -98,12 +98,6 @@ extern int *uu_exit_ok(void);
 extern int *uu_exit_fatal(void);
 extern int *uu_exit_usage(void);
 
-/*
- * string->number conversions
- */
-extern int uu_strtoint(const char *, void *, size_t, int, int64_t, int64_t);
-extern int uu_strtouint(const char *, void *, size_t, int, uint64_t, uint64_t);
-
 /*
  * Debug print facility functions.
  */
index 4d54485b735b6a90de86754243782de6c8eb8d31..3e6844852162d8a69af4f0f558b73332137c9f3d 100644 (file)
@@ -17,8 +17,7 @@ USER_C = \
        uu_misc.c \
        uu_open.c \
        uu_pname.c \
-       uu_string.c \
-       uu_strtoint.c
+       uu_string.c
 
 KERNEL_C =
 
diff --git a/lib/libuutil/uu_strtoint.c b/lib/libuutil/uu_strtoint.c
deleted file mode 100644 (file)
index 494e0a5..0000000
+++ /dev/null
@@ -1,300 +0,0 @@
-/*
- * CDDL HEADER START
- *
- * The contents of this file are subject to the terms of the
- * Common Development and Distribution License, Version 1.0 only
- * (the "License").  You may not use this file except in compliance
- * with the License.
- *
- * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
- * or http://www.opensolaris.org/os/licensing.
- * See the License for the specific language governing permissions
- * and limitations under the License.
- *
- * When distributing Covered Code, include this CDDL HEADER in each
- * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
- * If applicable, add the following below this CDDL HEADER, with the
- * fields enclosed by brackets "[]" replaced with your own identifying
- * information: Portions Copyright [yyyy] [name of copyright owner]
- *
- * CDDL HEADER END
- */
-/*
- * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
- * Use is subject to license terms.
- */
-
-
-
-#include "libuutil_common.h"
-
-#include <limits.h>
-#include <ctype.h>
-
-#define        MAX_BASE        36
-
-#define        IS_DIGIT(x)     ((x) >= '0' && (x) <= '9')
-
-#define        CTOI(x) (((x) >= '0' && (x) <= '9') ? (x) - '0' : \
-           ((x) >= 'a' && (x) <= 'z') ? (x) + 10 - 'a' : (x) + 10 - 'A')
-
-static int
-strtoint(const char *s_arg, uint64_t *out, uint32_t base, int sign)
-{
-       const unsigned char *s = (const unsigned char *)s_arg;
-
-       uint64_t val = 0;
-       uint64_t multmax;
-
-       unsigned c, i;
-
-       int neg = 0;
-
-       int bad_digit = 0;
-       int bad_char = 0;
-       int overflow = 0;
-
-       if (s == NULL || base == 1 || base > MAX_BASE) {
-               uu_set_error(UU_ERROR_INVALID_ARGUMENT);
-               return (-1);
-       }
-
-       while ((c = *s) != 0 && isspace(c))
-               s++;
-
-       switch (c) {
-       case '-':
-               if (!sign)
-                       overflow = 1;           /* becomes underflow below */
-               neg = 1;
-               /*FALLTHRU*/
-       case '+':
-               c = *++s;
-               break;
-       default:
-               break;
-       }
-
-       if (c == '\0') {
-               uu_set_error(UU_ERROR_EMPTY);
-               return (-1);
-       }
-
-       if (base == 0) {
-               if (c != '0')
-                       base = 10;
-               else if (s[1] == 'x' || s[1] == 'X')
-                       base = 16;
-               else
-                       base = 8;
-       }
-
-       if (base == 16 && c == '0' && (s[1] == 'x' || s[1] == 'X'))
-               c = *(s += 2);
-
-       if ((val = CTOI(c)) >= base) {
-               if (IS_DIGIT(c))
-                       bad_digit = 1;
-               else
-                       bad_char = 1;
-               val = 0;
-       }
-
-       multmax = (uint64_t)UINT64_MAX / (uint64_t)base;
-
-       for (c = *++s; c != '\0'; c = *++s) {
-               if ((i = CTOI(c)) >= base) {
-                       if (isspace(c))
-                               break;
-                       if (IS_DIGIT(c))
-                               bad_digit = 1;
-                       else
-                               bad_char = 1;
-                       i = 0;
-               }
-
-               if (val > multmax)
-                       overflow = 1;
-
-               val *= base;
-               if ((uint64_t)UINT64_MAX - val < (uint64_t)i)
-                       overflow = 1;
-
-               val += i;
-       }
-
-       while ((c = *s) != 0) {
-               if (!isspace(c))
-                       bad_char = 1;
-               s++;
-       }
-
-       if (sign) {
-               if (neg) {
-                       if (val > -(uint64_t)INT64_MIN)
-                               overflow = 1;
-               } else {
-                       if (val > INT64_MAX)
-                               overflow = 1;
-               }
-       }
-
-       if (neg)
-               val = -val;
-
-       if (bad_char | bad_digit | overflow) {
-               if (bad_char)
-                       uu_set_error(UU_ERROR_INVALID_CHAR);
-               else if (bad_digit)
-                       uu_set_error(UU_ERROR_INVALID_DIGIT);
-               else if (overflow) {
-                       if (neg)
-                               uu_set_error(UU_ERROR_UNDERFLOW);
-                       else
-                               uu_set_error(UU_ERROR_OVERFLOW);
-               }
-               return (-1);
-       }
-
-       *out = val;
-       return (0);
-}
-
-int
-uu_strtoint(const char *s, void *v, size_t sz, int base,
-    int64_t min, int64_t max)
-{
-       uint64_t val_u;
-       int64_t val;
-
-       if (min > max)
-               goto bad_argument;
-
-       switch (sz) {
-       case 1:
-               if (max > INT8_MAX || min < INT8_MIN)
-                       goto bad_argument;
-               break;
-       case 2:
-               if (max > INT16_MAX || min < INT16_MIN)
-                       goto bad_argument;
-               break;
-       case 4:
-               if (max > INT32_MAX || min < INT32_MIN)
-                       goto bad_argument;
-               break;
-       case 8:
-               if (max > INT64_MAX || min < INT64_MIN)
-                       goto bad_argument;
-               break;
-       default:
-               goto bad_argument;
-       }
-
-       if (min == 0 && max == 0) {
-               min = -(1ULL << (8 * sz - 1));
-               max = (1ULL << (8 * sz - 1)) - 1;
-       }
-
-       if (strtoint(s, &val_u, base, 1) == -1)
-               return (-1);
-
-       val = (int64_t)val_u;
-
-       if (val < min) {
-               uu_set_error(UU_ERROR_UNDERFLOW);
-               return (-1);
-       } else if (val > max) {
-               uu_set_error(UU_ERROR_OVERFLOW);
-               return (-1);
-       }
-
-       switch (sz) {
-       case 1:
-               *(int8_t *)v = val;
-               return (0);
-       case 2:
-               *(int16_t *)v = val;
-               return (0);
-       case 4:
-               *(int32_t *)v = val;
-               return (0);
-       case 8:
-               *(int64_t *)v = val;
-               return (0);
-       default:
-               break;          /* fall through to bad_argument */
-       }
-
-bad_argument:
-       uu_set_error(UU_ERROR_INVALID_ARGUMENT);
-       return (-1);
-}
-
-int
-uu_strtouint(const char *s, void *v, size_t sz, int base,
-    uint64_t min, uint64_t max)
-{
-       uint64_t val;
-
-       if (min > max)
-               goto bad_argument;
-
-       switch (sz) {
-       case 1:
-               if (max > UINT8_MAX)
-                       goto bad_argument;
-               break;
-       case 2:
-               if (max > UINT16_MAX)
-                       goto bad_argument;
-               break;
-       case 4:
-               if (max > UINT32_MAX)
-                       goto bad_argument;
-               break;
-       case 8:
-               if (max > UINT64_MAX)
-                       goto bad_argument;
-               break;
-       default:
-               goto bad_argument;
-       }
-
-       if (min == 0 && max == 0) {
-               /* we have to be careful, since << can overflow */
-               max = (1ULL << (8 * sz - 1)) * 2 - 1;
-       }
-
-       if (strtoint(s, &val, base, 0) == -1)
-               return (-1);
-
-       if (val < min) {
-               uu_set_error(UU_ERROR_UNDERFLOW);
-               return (-1);
-       } else if (val > max) {
-               uu_set_error(UU_ERROR_OVERFLOW);
-               return (-1);
-       }
-
-       switch (sz) {
-       case 1:
-               *(uint8_t *)v = val;
-               return (0);
-       case 2:
-               *(uint16_t *)v = val;
-               return (0);
-       case 4:
-               *(uint32_t *)v = val;
-               return (0);
-       case 8:
-               *(uint64_t *)v = val;
-               return (0);
-       default:
-               break;          /* shouldn't happen, fall through */
-       }
-
-bad_argument:
-       uu_set_error(UU_ERROR_INVALID_ARGUMENT);
-       return (-1);
-}
index 8d846ee40a48ea3d1854b48b5d6c7e2e0c8046f5..259bfb3091320d2f22149311010d41bac8f364cd 100644 (file)
@@ -836,7 +836,6 @@ zfs_write(struct inode *ip, uio_t *uio, int ioflag, cred_t *cr)
                            aiov->iov_base != abuf->b_data)) {
                                ASSERT(xuio);
                                dmu_write(zfsvfs->z_os, zp->z_id, woff,
-                                   // cppcheck-suppress nullPointer
                                    aiov->iov_len, aiov->iov_base, tx);
                                dmu_return_arcbuf(abuf);
                                xuio_stat_wbuf_copied();