From d2b4876231ac9c2e26880ebe428bfb41e60e098e Mon Sep 17 00:00:00 2001 From: Neil Horman Date: Wed, 19 Dec 2018 10:10:44 -0500 Subject: [PATCH] Default to one thread if getaffinity returns an error Its possible on virt systems, for sched_getaffinity to return an error if the vm has cpus, but cgroup placement restricts that set to 0 physical processors. In that event, just default to 1 thread on cpu 0 Signed-off-by: Neil Horman --- rngd_jitter.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/rngd_jitter.c b/rngd_jitter.c index 4e4b348..d14a3ba 100644 --- a/rngd_jitter.c +++ b/rngd_jitter.c @@ -421,7 +421,11 @@ int init_jitter_entropy_source(struct rng *ent_src) cpus = CPU_ALLOC(i); cpusize = CPU_ALLOC_SIZE(i); CPU_ZERO_S(cpusize, cpus); - sched_getaffinity(0, cpusize, cpus); + if (sched_getaffinity(0, cpusize, cpus) < 0) { + message(LOG_DAEMON|LOG_DEBUG, "Can not determine affinity of process, defaulting to 1 thread\n"); + CPU_SET(0,cpus); + } + num_threads = CPU_COUNT_S(cpusize, cpus); if (num_threads >= ent_src->rng_options[JITTER_OPT_THREADS].int_val) -- 2.17.2