From df9cf928c7d93e1097c7e205893a72f828ecc9f6 Mon Sep 17 00:00:00 2001 From: Kenneth Waters Date: Thu, 15 Oct 2009 07:08:48 +0200 Subject: [PATCH] Fix bug in bssplit parsing I found a bug is bssplit parsing in bssplit_ddir() when trying to use FIO on an ARM platform. It looks like str_to_decimal() takes a "void *" as its fourth argument, which it passes to get_multi_bytes(), which is passes to fio_get_kb_base(), which casts it to a "struct thread_data *". bssplit_ddir() is passing in "struct thread_data **", which I think is causing fio_get_kb_base() to go paw around in the stack; I believe the different stack layouts between ARM and x86 is causing me to see this problem. The first change that introduces this bug seems to be d6978a3242daad9cb7b0710b724f19225d1ed7e2. Signed-off-by: Jens Axboe --- options.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/options.c b/options.c index 549775c5..b5abd742 100644 --- a/options.c +++ b/options.c @@ -82,7 +82,7 @@ static int bssplit_ddir(struct thread_data *td, int ddir, char *str) } else perc = -1; - if (str_to_decimal(fname, &val, 1, &td)) { + if (str_to_decimal(fname, &val, 1, td)) { log_err("fio: bssplit conversion failed\n"); free(td->o.bssplit); return 1; -- 2.25.1