diff --git a/src/util-affinity.c b/src/util-affinity.c index 06256db5b8..d1028ff7e0 100644 --- a/src/util-affinity.c +++ b/src/util-affinity.c @@ -353,12 +353,15 @@ uint16_t UtilAffinityCpusOverlap(ThreadsAffinityType *taf1, ThreadsAffinityType */ void UtilAffinityCpusExclude(ThreadsAffinityType *mod_taf, ThreadsAffinityType *static_taf) { - cpu_set_t tmpset; SCMutexLock(&mod_taf->taf_mutex); SCMutexLock(&static_taf->taf_mutex); - CPU_XOR(&tmpset, &mod_taf->cpu_set, &static_taf->cpu_set); + int max_cpus = UtilCpuGetNumProcessorsOnline(); + for (int cpu = 0; cpu < max_cpus; cpu++) { + if (CPU_ISSET(cpu, &mod_taf->cpu_set) && CPU_ISSET(cpu, &static_taf->cpu_set)) { + CPU_CLR(cpu, &mod_taf->cpu_set); + } + } SCMutexUnlock(&static_taf->taf_mutex); - mod_taf->cpu_set = tmpset; SCMutexUnlock(&mod_taf->taf_mutex); } #endif /* HAVE_DPDK */