From d883efbdb2034b4ab23abec9cee1762d6d476247 Mon Sep 17 00:00:00 2001 From: Jens Axboe Date: Mon, 16 Nov 2015 14:00:41 -0700 Subject: [PATCH] Fix group_id != groupid mixup Also make sure we don't overflow 'groupid' Signed-off-by: Jens Axboe --- fio.h | 4 ++-- init.c | 4 ++++ libfio.c | 4 ++-- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/fio.h b/fio.h index a2b3d9ff..2e13b548 100644 --- a/fio.h +++ b/fio.h @@ -539,8 +539,8 @@ extern void td_restore_runstate(struct thread_data *, int); */ #define FIO_REAP_TIMEOUT 60 -#define TERMINATE_ALL (-1) -extern void fio_terminate_threads(int); +#define TERMINATE_ALL (-1U) +extern void fio_terminate_threads(unsigned int); extern void fio_mark_td_terminate(struct thread_data *); /* diff --git a/init.c b/init.c index 04b4a1e5..af35ee68 100644 --- a/init.c +++ b/init.c @@ -1233,6 +1233,10 @@ static int add_job(struct thread_data *td, const char *jobname, int job_add_num, if ((o->stonewall || o->new_group) && prev_group_jobs) { prev_group_jobs = 0; groupid++; + if (groupid == INT_MAX) { + log_err("fio: too many groups defined\n"); + goto err; + } } td->groupid = groupid; diff --git a/libfio.c b/libfio.c index 09591a11..3aa52e0a 100644 --- a/libfio.c +++ b/libfio.c @@ -229,7 +229,7 @@ void fio_mark_td_terminate(struct thread_data *td) td->terminate = 1; } -void fio_terminate_threads(int group_id) +void fio_terminate_threads(unsigned int group_id) { struct thread_data *td; pid_t pid = getpid(); @@ -238,7 +238,7 @@ void fio_terminate_threads(int group_id) dprint(FD_PROCESS, "terminate group_id=%d\n", group_id); for_each_td(td, i) { - if (group_id == TERMINATE_ALL || groupid == td->groupid) { + if (group_id == TERMINATE_ALL || group_id == td->groupid) { dprint(FD_PROCESS, "setting terminate on %s/%d\n", td->o.name, (int) td->pid); -- 2.25.1