summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKevin Greenan <kmgreen2@gmail.com>2014-04-27 09:24:00 -0700
committerKevin Greenan <kmgreen2@gmail.com>2014-04-27 09:24:00 -0700
commit9d53ea590b243170900d82111f6f04d75977e1cb (patch)
tree36e15e8098a104ecc50361ceb8874e2487176f9f
parent1559c2b51575c6ddd0005232e899ba1af4340610 (diff)
parentdf2c84d2322976b411fd6b1d60471fc3a0b8e74c (diff)
downloadgf-complete-9d53ea590b243170900d82111f6f04d75977e1cb.tar.gz
Merged in dalgaaf/gf-complete/wip-da-coverity-rebased (pull request #21)
Fixes for some issues found via Coverity in the Ceph project.
-rw-r--r--include/gf_int.h4
-rw-r--r--src/gf.c15
-rw-r--r--src/gf_general.c2
-rw-r--r--src/gf_w16.c1
-rw-r--r--src/gf_w32.c2
-rw-r--r--src/gf_w4.c3
-rw-r--r--src/gf_w8.c2
7 files changed, 17 insertions, 12 deletions
diff --git a/include/gf_int.h b/include/gf_int.h
index 9221569..98294cc 100644
--- a/include/gf_int.h
+++ b/include/gf_int.h
@@ -154,8 +154,8 @@ typedef enum {GF_E_MDEFDIV, /* Dev != Default && Mult == Default */
GF_E_SP128AR, /* Mult == SPLIT, w=128, Bad arg1/arg2 */
GF_E_SP128AL, /* Mult == SPLIT, w=128, SSE requires ALTMAP */
GF_E_SP128AS, /* Mult == SPLIT, w=128, ALTMAP requires SSE */
- GF_E_SP128_A, /* Mult == SPLIT, w=128, SSE only with 4/128 */
- GF_E_SP128_S, /* Mult == SPLIT, w=128, ALTMAP only with 4/128 */
+ GF_E_SP128_A, /* Mult == SPLIT, w=128, ALTMAP only with 4/128 */
+ GF_E_SP128_S, /* Mult == SPLIT, w=128, SSE only with 4/128 */
GF_E_SPLIT_W, /* Mult == SPLIT, Bad w (8, 16, 32, 64, 128) */
GF_E_SP_16AR, /* Mult == SPLIT, w=16, Bad arg1/arg2 */
GF_E_SP_16_A, /* Mult == SPLIT, w=16, ALTMAP only with 4/16 */
diff --git a/src/gf.c b/src/gf.c
index 62f5d7b..da714d2 100644
--- a/src/gf.c
+++ b/src/gf.c
@@ -85,8 +85,8 @@ void gf_error()
case GF_E_SP128AR: s = "With -m SPLIT, w=128, bad arg1/arg2."; break;
case GF_E_SP128AL: s = "With -m SPLIT, w=128, -r SSE requires -r ALTMAP."; break;
case GF_E_SP128AS: s = "With -m SPLIT, w=128, ALTMAP needs SSSE3 supported."; break;
- case GF_E_SP128_A: s = "With -m SPLIT, w=128, -r SSE|NOSSE only with arg1/arg2 = 4/128."; break;
- case GF_E_SP128_S: s = "With -m SPLIT, w=128, -r ALTMAP only with arg1/arg2 = 4/128."; break;
+ case GF_E_SP128_A: s = "With -m SPLIT, w=128, -r ALTMAP only with arg1/arg2 = 4/128."; break;
+ case GF_E_SP128_S: s = "With -m SPLIT, w=128, -r SSE|NOSSE only with arg1/arg2 = 4/128."; break;
case GF_E_SPLIT_W: s = "With -m SPLIT, w must be in {8, 16, 32, 64, 128}."; break;
case GF_E_SP_16AR: s = "With -m SPLIT, w=16, Bad arg1/arg2."; break;
case GF_E_SP_16_A: s = "With -m SPLIT, w=16, -r ALTMAP only with arg1/arg2 = 4/16."; break;
@@ -338,11 +338,12 @@ int gf_error_check(int w, int mult_type, int region_type, int divide_type,
if (rsse && !sse3) { _gf_errno = GF_E_SP_SSE3; return 0; }
if (raltmap) { _gf_errno = GF_E_SP_8__A; return 0; }
} else if (w == 16) {
- if (arg1 == 4 && arg2 == 16) {
- if (rsse && !sse3) { _gf_errno = GF_E_SP_SSE3; return 0; }
- } else if (arg1 == 8 && (arg2 == 16 || arg2 == 8)) {
+ if ((arg1 == 8 && arg2 == 8) ||
+ (arg1 == 8 && arg2 == 16)) {
if (rsse || rnosse) { _gf_errno = GF_E_SP_16_S; return 0; }
if (raltmap) { _gf_errno = GF_E_SP_16_A; return 0; }
+ } else if (arg1 == 4 && arg2 == 16) {
+ if (rsse && !sse3) { _gf_errno = GF_E_SP_SSE3; return 0; }
} else { _gf_errno = GF_E_SP_16AR; return 0; }
} else if (w == 32) {
if ((arg1 == 8 && arg2 == 8) ||
@@ -350,10 +351,8 @@ int gf_error_check(int w, int mult_type, int region_type, int divide_type,
(arg1 == 16 && arg2 == 32)) {
if (rsse || rnosse) { _gf_errno = GF_E_SP_32_S; return 0; }
if (raltmap) { _gf_errno = GF_E_SP_32_A; return 0; }
- } else if ((arg1 == 4 && arg2 == 32) ||
- (arg1 == 4 && arg2 == 32)) {
+ } else if (arg1 == 4 && arg2 == 32) {
if (rsse && !sse3) { _gf_errno = GF_E_SP_SSE3; return 0; }
- if (raltmap && arg1 != 4) { _gf_errno = GF_E_SP_32_A; return 0; }
if (raltmap && !sse3) { _gf_errno = GF_E_SP_32AS; return 0; }
if (raltmap && rnosse) { _gf_errno = GF_E_SP_32AS; return 0; }
} else { _gf_errno = GF_E_SP_32AR; return 0; }
diff --git a/src/gf_general.c b/src/gf_general.c
index b5ca7a9..8fcc737 100644
--- a/src/gf_general.c
+++ b/src/gf_general.c
@@ -240,7 +240,7 @@ int gf_general_are_equal(gf_general_t *v1, gf_general_t *v2, int w)
return (v1->w64 == v2->w64);
} else {
return (v1->w128[0] == v2->w128[0] &&
- v1->w128[0] == v2->w128[0]);
+ v1->w128[1] == v2->w128[1]);
}
}
diff --git a/src/gf_w16.c b/src/gf_w16.c
index f1fb650..272a95b 100644
--- a/src/gf_w16.c
+++ b/src/gf_w16.c
@@ -1817,6 +1817,7 @@ gf_w16_bytwo_b_nosse_multiply_region(gf_t *gf, void *src, void *dest, gf_val_32_
s64++;
}
}
+ break;
default:
if (xor) {
while (d64 < (uint64_t *) rd.d_top) {
diff --git a/src/gf_w32.c b/src/gf_w32.c
index 1503c72..8f7790c 100644
--- a/src/gf_w32.c
+++ b/src/gf_w32.c
@@ -1096,6 +1096,7 @@ gf_w32_bytwo_b_nosse_multiply_region(gf_t *gf, void *src, void *dest, gf_val_32_
s64++;
}
}
+ break;
case 4:
if (xor) {
while (d64 < (uint64_t *) rd.d_top) {
@@ -1139,6 +1140,7 @@ gf_w32_bytwo_b_nosse_multiply_region(gf_t *gf, void *src, void *dest, gf_val_32_
s64++;
}
}
+ break;
default:
if (xor) {
while (d64 < (uint64_t *) rd.d_top) {
diff --git a/src/gf_w4.c b/src/gf_w4.c
index 2397d82..6bc79d0 100644
--- a/src/gf_w4.c
+++ b/src/gf_w4.c
@@ -793,7 +793,6 @@ int gf_w4_table_init(gf_t *gf)
} else {
return gf_w4_quad_table_init(gf);
}
- return gf_w4_double_table_init(gf);
} else {
return gf_w4_single_table_init(gf);
}
@@ -1584,6 +1583,7 @@ gf_w4_bytwo_b_nosse_multiply_region(gf_t *gf, void *src, void *dest, gf_val_32_t
s64++;
}
}
+ break;
case 6:
if (xor) {
while (d64 < (uint64_t *) rd.d_top) {
@@ -1606,6 +1606,7 @@ gf_w4_bytwo_b_nosse_multiply_region(gf_t *gf, void *src, void *dest, gf_val_32_t
s64++;
}
}
+ break;
case 7:
if (xor) {
while (d64 < (uint64_t *) rd.d_top) {
diff --git a/src/gf_w8.c b/src/gf_w8.c
index d3e2bf6..a2a8600 100644
--- a/src/gf_w8.c
+++ b/src/gf_w8.c
@@ -1932,6 +1932,7 @@ gf_w8_bytwo_b_nosse_multiply_region(gf_t *gf, void *src, void *dest, gf_val_32_t
s64++;
}
}
+ break;
case 6:
if (xor) {
while (d64 < (uint64_t *) rd.d_top) {
@@ -1954,6 +1955,7 @@ gf_w8_bytwo_b_nosse_multiply_region(gf_t *gf, void *src, void *dest, gf_val_32_t
s64++;
}
}
+ break;
/*
case 7:
if (xor) {