Skip to content

Commit 54d1153

Browse files
pablodelaratkanteck
authored andcommitted
raid: [test] fix memory leak
Signed-off-by: Pablo de Lara <[email protected]>
1 parent c183961 commit 54d1153

File tree

4 files changed

+55
-38
lines changed

4 files changed

+55
-38
lines changed

raid/pq_check_test.c

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -73,9 +73,9 @@ void rand_buffer(unsigned char *buf, long buffer_size)
7373
int main(int argc, char *argv[])
7474
{
7575
int i, j, k, ret, fail = 0;
76-
void *buffs[TEST_SOURCES + 2];
76+
void *buffs[TEST_SOURCES + 2] = { NULL };
7777
char c;
78-
char *tmp_buf[TEST_SOURCES + 2];
78+
char *tmp_buf[TEST_SOURCES + 2] = { NULL };
7979
int serr, lerr;
8080

8181
printf("Test pq_check_test %d sources X %d bytes\n", TEST_SOURCES, TEST_LEN);
@@ -119,7 +119,7 @@ int main(int argc, char *argv[])
119119
if (ret == 0) {
120120
fail++;
121121
printf("\nfail corrupt zero buffer test j=%d, i=%d\n", j, i);
122-
return 1;
122+
goto exit;
123123
}
124124
((char *)buffs[j])[i] = 0; // un-corrupt buffer
125125
}
@@ -158,15 +158,15 @@ int main(int argc, char *argv[])
158158
printf
159159
("\nFail rand test with un-corrupted buffer j=%d, i=%d\n",
160160
j, i);
161-
return 1;
161+
goto exit;
162162
}
163163
c = ((char *)buffs[j])[i];
164164
((char *)buffs[j])[i] = c ^ 1; // corrupt buffer
165165
ret = pq_check(TEST_SOURCES + 2, TEST_LEN, buffs);
166166
if (ret == 0) { // Check it now fails
167167
fail++;
168168
printf("\nfail corrupt buffer test j=%d, i=%d\n", j, i);
169-
return 1;
169+
goto exit;
170170
}
171171
((char *)buffs[j])[i] = c; // un-corrupt buffer
172172
}
@@ -192,7 +192,7 @@ int main(int argc, char *argv[])
192192
if (ret != 0) { // Should pass
193193
printf("\nfail rand fixed len test %d sources\n", j);
194194
fail++;
195-
return 1;
195+
goto exit;
196196
}
197197

198198
c = ((char *)buffs[i])[k];
@@ -204,7 +204,7 @@ int main(int argc, char *argv[])
204204
("\nfail rand fixed len test corrupted buffer %d sources\n",
205205
j);
206206
fail++;
207-
return 1;
207+
goto exit;
208208
}
209209
((char *)buffs[i])[k] = c; // un-corrupt buffer
210210
}
@@ -237,7 +237,7 @@ int main(int argc, char *argv[])
237237
("\nfail rand var src, len test %d sources, len=%d\n",
238238
j, k);
239239
fail++;
240-
return 1;
240+
goto exit;
241241
}
242242

243243
tmp = (char *)buffs[serr];
@@ -251,7 +251,7 @@ int main(int argc, char *argv[])
251251
"%d sources, len=%d, ret=%d\n", j, k,
252252
ret);
253253
fail++;
254-
return 1;
254+
goto exit;
255255
}
256256
((char *)buffs[serr])[lerr] = c; // un-corrupt buffer
257257
}
@@ -293,7 +293,7 @@ int main(int argc, char *argv[])
293293
"offset: %d, len: %d, ret: %d\n", i,
294294
TEST_LEN - i, ret);
295295
fail++;
296-
return 1;
296+
goto exit;
297297
}
298298

299299
tmp_buf[serr][lerr] = c;
@@ -309,6 +309,9 @@ int main(int argc, char *argv[])
309309
if (fail == 0)
310310
printf("Pass\n");
311311

312+
exit:
313+
for (i = 0; i < TEST_SOURCES + 2; i++)
314+
aligned_free(buffs[i]);
312315
return fail;
313316

314317
}

raid/pq_gen_test.c

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -65,9 +65,9 @@ int dump(unsigned char *buf, int len)
6565

6666
int main(int argc, char *argv[])
6767
{
68-
int i, j, k, ret, fail = 0;
69-
void *buffs[TEST_SOURCES + 2]; // Pointers to src and dest
70-
char *tmp_buf[TEST_SOURCES + 2];
68+
int i, j, k, ret = 0, fail = 0;
69+
void *buffs[TEST_SOURCES + 2] = { NULL }; // Pointers to src and dest
70+
char *tmp_buf[TEST_SOURCES + 2] = { NULL };
7171

7272
printf("Test pq_gen_test ");
7373

@@ -79,7 +79,8 @@ int main(int argc, char *argv[])
7979
ret = posix_memalign(&buf, 32, TEST_LEN);
8080
if (ret) {
8181
printf("alloc error: Fail");
82-
return 1;
82+
fail = 1;
83+
goto exit;
8384
}
8485
buffs[i] = buf;
8586
}
@@ -102,7 +103,7 @@ int main(int argc, char *argv[])
102103

103104
if (fail > 0) {
104105
printf("fail zero test %d\n", fail);
105-
return 1;
106+
goto exit;
106107
}
107108
#ifdef TEST_VERBOSE
108109
putchar('.');
@@ -126,7 +127,7 @@ int main(int argc, char *argv[])
126127
for (t = TEST_SOURCES; t < TEST_SOURCES + 2; t++)
127128
dump(buffs[t], 15);
128129

129-
return 1;
130+
goto exit;
130131
}
131132
#ifdef TEST_VERBOSE
132133
putchar('.');
@@ -142,7 +143,7 @@ int main(int argc, char *argv[])
142143

143144
if (fail > 0) {
144145
printf("fail rand test %d sources\n", j);
145-
return 1;
146+
goto exit;
146147
}
147148
#ifdef TEST_VERBOSE
148149
putchar('.');
@@ -164,7 +165,7 @@ int main(int argc, char *argv[])
164165
if (fail > 0) {
165166
printf("fail rand test %d sources, len=%d, fail="
166167
"%d, ret=%d\n", j, k, fail, ret);
167-
return 1;
168+
goto exit;
168169
}
169170
}
170171
#ifdef TEST_VERBOSE
@@ -187,7 +188,7 @@ int main(int argc, char *argv[])
187188
if (fail > 0) {
188189
printf("fail end test - offset: %d, len: %d, fail: %d, "
189190
"ret: %d\n", k, TEST_LEN - k, fail, ret);
190-
return 1;
191+
goto exit;
191192
}
192193
#ifdef TEST_VERBOSE
193194
putchar('.');
@@ -199,5 +200,8 @@ int main(int argc, char *argv[])
199200
if (!fail)
200201
printf(" done: Pass\n");
201202

203+
exit:
204+
for (i = 0; i < TEST_SOURCES + 2; i++)
205+
aligned_free(buffs[i]);
202206
return fail;
203207
}

raid/xor_check_test.c

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ void rand_buffer(unsigned char *buf, long buffer_size)
5353
int main(int argc, char *argv[])
5454
{
5555
int i, j, k, ret, fail = 0;
56-
void *buffs[TEST_SOURCES + 1];
56+
void *buffs[TEST_SOURCES + 1] = { NULL };
5757
char c;
5858
int serr, lerr;
5959
char *tmp_buf[TEST_SOURCES + 1];
@@ -67,7 +67,8 @@ int main(int argc, char *argv[])
6767
void *buf;
6868
if (posix_memalign(&buf, 16, TEST_LEN)) {
6969
printf("alloc error: Fail");
70-
return 1;
70+
fail = 1;
71+
goto exit;
7172
}
7273
buffs[i] = buf;
7374
}
@@ -99,7 +100,7 @@ int main(int argc, char *argv[])
99100
if (ret == 0) {
100101
fail++;
101102
printf("\nfail corrupt buffer test j=%d, i=%d\n", j, i);
102-
return 1;
103+
goto exit;
103104
}
104105
((char *)buffs[j])[i] = 0; // un-corrupt buffer
105106
}
@@ -138,15 +139,15 @@ int main(int argc, char *argv[])
138139
printf
139140
("\nFail rand test with un-corrupted buffer j=%d, i=%d\n",
140141
j, i);
141-
return 1;
142+
goto exit;
142143
}
143144
c = ((char *)buffs[j])[i];
144145
((char *)buffs[j])[i] = c ^ 1; // corrupt buffer
145146
ret = xor_check(TEST_SOURCES + 1, TEST_LEN, buffs);
146147
if (ret == 0) { // Check it now fails
147148
fail++;
148149
printf("\nfail corrupt buffer test j=%d, i=%d\n", j, i);
149-
return 1;
150+
goto exit;
150151
}
151152
((char *)buffs[j])[i] = c; // un-corrupt buffer
152153
}
@@ -172,7 +173,7 @@ int main(int argc, char *argv[])
172173
if (ret != 0) { // Should pass
173174
printf("\nfail rand test %d sources\n", j);
174175
fail++;
175-
return 1;
176+
goto exit;
176177
}
177178

178179
c = ((char *)buffs[i])[k];
@@ -184,7 +185,7 @@ int main(int argc, char *argv[])
184185
("\nfail rand test corrupted buffer %d sources\n",
185186
j);
186187
fail++;
187-
return 1;
188+
goto exit;
188189
}
189190
((char *)buffs[i])[k] = c; // un-corrupt buffer
190191
}
@@ -215,7 +216,7 @@ int main(int argc, char *argv[])
215216
if (ret != 0) { // Should pass
216217
printf("\nfail rand test %d sources\n", j);
217218
fail++;
218-
return 1;
219+
goto exit;
219220
}
220221

221222
c = ((char *)buffs[serr])[lerr];
@@ -227,7 +228,7 @@ int main(int argc, char *argv[])
227228
"%d sources, len=%d, ret=%d\n", j, k,
228229
ret);
229230
fail++;
230-
return 1;
231+
goto exit;
231232
}
232233
((char *)buffs[serr])[lerr] = c; // un-corrupt buffer
233234
}
@@ -254,7 +255,7 @@ int main(int argc, char *argv[])
254255
if (ret != 0) {
255256
printf("fail end test - offset: %d, len: %d\n", i, TEST_LEN - i);
256257
fail++;
257-
return 1;
258+
goto exit;
258259
}
259260
// Test bad data
260261
for (serr = 0; serr < TEST_SOURCES + 1; serr++) {
@@ -269,7 +270,7 @@ int main(int argc, char *argv[])
269270
"offset: %d, len: %d, ret: %d\n", i,
270271
TEST_LEN - i, ret);
271272
fail++;
272-
return 1;
273+
goto exit;
273274
}
274275

275276
tmp_buf[serr][lerr] = c;
@@ -285,6 +286,10 @@ int main(int argc, char *argv[])
285286
if (fail == 0)
286287
printf("Pass\n");
287288

289+
exit:
290+
for (i = 0; i < TEST_SOURCES + 1; i++)
291+
aligned_free(buffs[i]);
292+
288293
return fail;
289294

290295
}

raid/xor_gen_test.c

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,8 @@ void rand_buffer(unsigned char *buf, long buffer_size)
5353
int main(int argc, char *argv[])
5454
{
5555
int i, j, k, ret, fail = 0;
56-
void *buffs[TEST_SOURCES + 1];
57-
char *tmp_buf[TEST_SOURCES + 1];
56+
void *buffs[TEST_SOURCES + 1] = { NULL };
57+
char *tmp_buf[TEST_SOURCES + 1] = { NULL };
5858

5959
printf("Test xor_gen_test ");
6060

@@ -66,7 +66,8 @@ int main(int argc, char *argv[])
6666
ret = posix_memalign(&buf, 32, TEST_LEN);
6767
if (ret) {
6868
printf("alloc error: Fail");
69-
return 1;
69+
fail = 1;
70+
goto exit;
7071
}
7172
buffs[i] = buf;
7273
}
@@ -84,7 +85,7 @@ int main(int argc, char *argv[])
8485

8586
if (fail > 0) {
8687
printf("fail zero test");
87-
return 1;
88+
goto exit;
8889
}
8990
#ifdef TEST_VERBOSE
9091
putchar('.');
@@ -100,7 +101,7 @@ int main(int argc, char *argv[])
100101

101102
if (fail > 0) {
102103
printf("fail rand test %d\n", fail);
103-
return 1;
104+
goto exit;
104105
}
105106
#ifdef TEST_VERBOSE
106107
putchar('.');
@@ -116,7 +117,7 @@ int main(int argc, char *argv[])
116117

117118
if (fail > 0) {
118119
printf("fail rand test %d sources\n", j);
119-
return 1;
120+
goto exit;
120121
}
121122
#ifdef TEST_VERBOSE
122123
putchar('.');
@@ -138,7 +139,7 @@ int main(int argc, char *argv[])
138139
if (fail > 0) {
139140
printf("fail rand test %d sources, len=%d, ret=%d\n", j, k,
140141
fail);
141-
return 1;
142+
goto exit;
142143
}
143144
}
144145
#ifdef TEST_VERBOSE
@@ -159,7 +160,7 @@ int main(int argc, char *argv[])
159160

160161
if (fail > 0) {
161162
printf("fail end test - offset: %d, len: %d\n", i, TEST_LEN - i);
162-
return 1;
163+
goto exit;
163164
}
164165
#ifdef TEST_VERBOSE
165166
putchar('.');
@@ -170,5 +171,9 @@ int main(int argc, char *argv[])
170171
if (!fail)
171172
printf(" done: Pass\n");
172173

174+
exit:
175+
for (i = 0; i < TEST_SOURCES + 1; i++)
176+
aligned_free(buffs[i]);
177+
173178
return fail;
174179
}

0 commit comments

Comments
 (0)