virCHMonitorGetIOThreads returns an int, not size_t. Also return early if it's negative, because promoting it to an unsigned type in the for loop condition could lead to an infinte loop. Signed-off-by: Ján Tomko <jtomko@xxxxxxxxxx> --- src/ch/ch_process.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/ch/ch_process.c b/src/ch/ch_process.c index 414e203154..e4313d1008 100644 --- a/src/ch/ch_process.c +++ b/src/ch/ch_process.c @@ -327,9 +327,11 @@ virCHProcessSetupIOThreads(virDomainObj *vm) virCHDomainObjPrivate *priv = vm->privateData; virDomainIOThreadInfo **iothreads = NULL; size_t i; - size_t niothreads; + int niothreads; + + if ((niothreads = virCHMonitorGetIOThreads(priv->monitor, &iothreads)) < 0) + return -1; - niothreads = virCHMonitorGetIOThreads(priv->monitor, &iothreads); for (i = 0; i < niothreads; i++) { VIR_DEBUG("IOThread index = %ld , tid = %d", i, iothreads[i]->iothread_id); if (virCHProcessSetupIOThread(vm, iothreads[i]) < 0) -- 2.34.1