在 2021/5/13 0:53, Bruce Richardson 写道:
On Fri, Apr 23, 2021 at 03:35:30PM +0800, Min Hu (Connor) wrote:Variable i is used as a denominator which may be zero, and this may result in segmentation fault. This patch fixed it. Fixes: 948bc3d6d095 ("test: add reciprocal based division") Cc: [email protected] Signed-off-by: Min Hu (Connor) <[email protected]> --- app/test/test_reciprocal_division_perf.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/app/test/test_reciprocal_division_perf.c b/app/test/test_reciprocal_division_perf.c index a7be8aa..2647308 100644 --- a/app/test/test_reciprocal_division_perf.c +++ b/app/test/test_reciprocal_division_perf.c @@ -143,7 +143,7 @@ test_reciprocal_division_perf(void) "result %"PRIu64"", nresult_u64, rresult_u64); result = 1; - break; + goto err; } }@@ -182,7 +182,7 @@ test_reciprocal_division_perf(void)dividend_u64, divisor_u64, nresult_u64, rresult_u64); result = 1; - break; + goto err; } } printf("64bit Division results:\n"); @@ -195,6 +195,7 @@ test_reciprocal_division_perf(void) printf("Cycles per division(reciprocal) : %3.2f\n", ((double)tot_cyc_r)/i);+err:return result; }This looks correct as far as it goes, but I believe the same fix is needed at lines 66 and 106 too. One other thing I note is that currently the test will move on to the next test case on failure, due to break, but using the goto will change that behaviour. Therefore, I wonder if a better fix is to skip the printouts if i == 0 in each case?
Good point, fixed in v2, thanks Bruce.
/Bruce .

