From: Jens Axboe Date: Thu, 30 Nov 2017 23:49:23 +0000 (-0700) Subject: options: don't overrun bssplit array X-Git-Tag: fio-3.3~39 X-Git-Url: https://git.kernel.dk/?p=fio.git;a=commitdiff_plain;h=b53a215550e2a8571fd0970a77ddaf77ccd53798 options: don't overrun bssplit array Since we now have a different number of splits we support for zones and block size splits, make sure we pass in the right max. Signed-off-by: Jens Axboe --- diff --git a/options.c b/options.c index 9e3e960c..30f79623 100644 --- a/options.c +++ b/options.c @@ -61,7 +61,8 @@ struct split { }; static int split_parse_ddir(struct thread_options *o, struct split *split, - enum fio_ddir ddir, char *str, bool absolute) + enum fio_ddir ddir, char *str, bool absolute, + unsigned int max_splits) { unsigned long long perc; unsigned int i; @@ -109,7 +110,7 @@ static int split_parse_ddir(struct thread_options *o, struct split *split, split->val1[i] = val; split->val2[i] = perc; i++; - if (i == ZONESPLIT_MAX) + if (i == max_splits) break; } @@ -126,7 +127,7 @@ static int bssplit_ddir(struct thread_options *o, enum fio_ddir ddir, char *str, memset(&split, 0, sizeof(split)); - if (split_parse_ddir(o, &split, ddir, str, data)) + if (split_parse_ddir(o, &split, ddir, str, data, BSSPLIT_MAX)) return 1; if (!split.nr) return 0; @@ -846,7 +847,7 @@ static int zone_split_ddir(struct thread_options *o, enum fio_ddir ddir, memset(&split, 0, sizeof(split)); - if (split_parse_ddir(o, &split, ddir, str, absolute)) + if (split_parse_ddir(o, &split, ddir, str, absolute, ZONESPLIT_MAX)) return 1; if (!split.nr) return 0;